![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mysql
文章平均质量分 88
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
十八. MySQL 全局查询日志
目录一. mysql 全局查询日志一. mysql 全局查询日志注意点: mysql 全局查询日志 只能在测试环境使用,生产环境进制开启配置方式开启全局查询日志: my.cnf文件中配置编码方式开启全局查询日志全局查询日志会记录到mysql库中的general_log表中,查看该表获取查询日志全局查询日志的好处是:假如在完成一个完整功能后出现了bug,并且最终会导致数据库中数据不对,或者跟数据库中的数据有关系,假如上层服务太多,该功能从开始到完成中间调用了多个接口,会多次操作数据库,并且原创 2023-03-31 14:13:22 · 150 阅读 · 0 评论 -
十七. MySQL Show Profile 优化分析
目录一. mysql Show Profile使用步骤实际生产中重点关注"Status"列中的以下四个一. mysql Show Profile解释: 正常情况下,开启慢查询日志,使用explain对sql进行分析优化可以解决一大部分慢sql的问题,但是极端情况下可能还会存在问题,例如网络连接问题,锁问题等,需要更加细粒度的排查,这时候就需要用到 Show ProfileShow Profile 作用: 是MySql提供用来分析当前会话中执行的消耗情况的工具,可用于sql调优的测量,默认情况下是关闭原创 2023-03-31 14:13:00 · 146 阅读 · 0 评论 -
十六. MySQL 慢查询日志
目录一. MySQL 慢查询日志小总结二. mysqdumpslow日志分析工具一. MySQL 慢查询日志什么是慢查询: 假设执行一条查询sql语句,在指定时间内没有返回执行结果,说明查询过慢,对这条执行语句进行日志记录,慢查询就是指记录的这个日志(注意点: 慢查询日志记录需要查询日志记录到文件,除了排查问题以外一般情况下建议关闭)查询当前mysql服务器慢查询的配置(默认是关闭,开启后默认10未返回结果进行慢查询日志记录): show variables like ‘slow_query%’原创 2023-03-31 14:12:23 · 199 阅读 · 0 评论 -
十五. MySQL explain 执行计划
目录一. EXPLAIN 执行计划基础解释二. EXPLAIN 字段解释id一. EXPLAIN 执行计划基础解释解释: 使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySql是如何处理接收的SQL语句的,然后进行指定的修改通过EXPLAIN+SQL语句,查看该语句的执行计划,执行顺序,可以获取到当前执行的SQL语句的查询耗时时间,索引是否生效,使用了几个索引等…,分析优进行优化,借用大神整理的EXPLAIN用法,EXPLAIN作用查看表的读取顺序数据读取操作的操作类型原创 2023-03-31 14:11:58 · 461 阅读 · 0 评论 -
十四. MySQL 锁相关
MyISAM在执行查询语句(SELECT)前,会自动给所涉及表添加读锁,在执行增删改操作前会自动给涉及表添加写锁MySql表级锁有两种模式: 表共享读锁, 表独占写锁根据上面的示例总结出MyISAM 执行查询操作时,会自动添加读锁,不会阻塞其它进程对当前表的读操作,会阻塞其它进程对当前表的更新操作,并且当前加锁进程无法再次读取当前表与其它表操作,也无法对当前表与其它表进行更新操作。原创 2023-03-31 14:09:14 · 676 阅读 · 0 评论 -
十三. MySQL MVCC
了解MVCC前需要先了解当前读与快照读的概念当前读(加锁读): 像 select lock in share mode (共享锁), select for update;update;insert;delete (排他锁)等这些加锁操作都是一种当前读,为什么叫当前读?就是它读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。原创 2023-03-31 14:11:13 · 185 阅读 · 0 评论 -
十二. MySQL redo undo binLog
一个事务执行过程中可以分配4种Undo页面链表(为什么时4种参考undo页面链表)不同事务拥有的Undo页面链表不同,整个系统中同一时刻可能存在很多个Undo页面链表为了方便管理这些Undo页面链表,会获取Undo页面链表的first undo page的页号,存储在一个 Rollback Segment Header 的页面中,这些页号被称为 undo slot, 每个 Rollback Segment Header 都对应一个回滚段 Rollback Segment,回滚段中只存在一个页面。原创 2023-03-31 14:10:56 · 282 阅读 · 0 评论 -
十一. MySQL InnoDB 三大特性之 BufferPool
InnoDB提供了LRU链表,提供了淘汰策略,预读的数据会被放到 LRU 链表头部,当 BufferPool空间不足时,需要把末尾的页淘汰掉,如果这些预读的数据一直没有被使用,而把被使用的数据挤到了链表的尾部,进而被淘汰,那缓存的命中率就会大大降低,这就是预读失效BufferPool是 MySQL 为了提高操作性能,在启动时预先分配的一块连续的内存空间,用来缓存数据页,默认128M。原创 2023-03-31 14:10:07 · 325 阅读 · 0 评论 -
十. MySQL InnoDB 三大特性之 双写缓冲区 与 自适应Hash索引
redoLog中记录的是页的修改记录,如果通过readLog进行恢复比较慢,在使用双写缓冲区后如果掉电,直接拷贝双写缓冲区的即可,readLog慢的原因后续参考事物。原创 2023-03-30 15:29:48 · 408 阅读 · 0 评论 -
九. MySQL InnoDB 底层结构
通过上面了解到使用InnoDB存储引擎的记录结构,行格式,与索引页结构, 索引页数据会存储在"表名.ibd" 表空间中InnoDB在建表时如果有主键会基于主键构建主索引,如果没有主键会选择一个设置了唯一索引的列作为主索引,如果两个都没有会自动创建一个为6个字节的row_id作为主索引使用,反正是InnoDB时一定会有主索引,然后基于主索引存储数据。原创 2023-03-30 15:31:26 · 217 阅读 · 0 评论 -
八. MySQL 成本计算与执行优化器优化步骤
explain format=json 实际执行的sql语句” 该方式比普通explain会多返回一些数据,其中query_cost的值就是执行当前sql所需要io成本+cpu成本,继续寻找会发现一个const_info内部保存了详细的执行成本。TRACE: 整个执行计划优化分析生成的json文本, 在TRACE中包含执行sql时的三个阶段: “join_preparation 准备阶段”, “join_optimization 优化阶段”, “join_execution 执行阶段”原创 2023-03-30 14:50:05 · 346 阅读 · 0 评论 -
七. MySQL 其它优化相关
目录一. 数据库问题排查流程二. 小表驱动大表与in,exists查询问题小表驱动大表一. 数据库问题排查流程MySql 正常生产排查流程开启日志慢查询记录,设置阈值,例如2秒运行生产环境,查看查看慢查询日志找到慢查询SQL, EXPLAIN查看执行计划,分析优化(通常情况下在此处已经解决了大部分慢SQL的问题)如果还有慢SQL, show profile查看执行sql在MySql服务器中执行细节生命周期情况进行分析优化,如果还有慢SQL,就需要进行数据库服务器的参数调优二. 小表驱原创 2023-03-30 14:23:23 · 486 阅读 · 0 评论 -
六. MySQL 索引失效与索引优化案例
目录一. 单表优化案例案例1:查询category_id为1,且comments大于1,且views最大的数据的author_id值二. 表连接优化案例两表连接优化案例案例1: 输出所有表中所有数据与book表中book.card=class.card的数据多表连接优化案例表连接优化总结二. 索引使用注意点,与索引失效什么情况下会出现索引失效案例一. 单表优化案例表数据案例1:查询category_id为1,且comments大于1,且views最大的数据的author_id值select aut原创 2023-03-30 14:20:50 · 216 阅读 · 0 评论 -
五. MySQL 索引
目录一. 基础解释使用索引带来的好处与坏处一. 基础解释什么是索引:索引(Index)是帮助mysql提高查询数据效率的一种数据结构,可以简单理解为"对数据根据某种规则进行排序,根据这个有序的规则更快的查找到指定数据的数据结构"(数据之外,数据库系统维护着满足特定查找算法的数据结构,这种数据结构一引用的方式执行数据例如B+树,类比字典)索引对SQL执行的影响: 在执行一条sql时,索引会影响到"where"条件约束,是否用到索引,还会影响到"order by"排序两大功能(总结,索引拥有排序查找两大原创 2023-03-30 14:11:44 · 409 阅读 · 0 评论 -
四. MySQL 存储引擎
目录一. 存储引擎简介InnoDb 与 MyISAM 区别存储引擎的创建一. 存储引擎简介存储引擎的主要功能:真正负责的MySql中数据的存储与提取,不同的存储引擎有不同的特性查出MySql 支持的存储引擎命令"show engines"查看当前默认存储引擎,与当前实际使用的存储引擎命令" show variables like ‘%storage_engine%’ "InnoDb 与 MyISAM 区别mysql5.5之前使用MyISAM 作为搜索引擎,5.5以后使用InnoDB原创 2023-03-30 13:57:11 · 181 阅读 · 0 评论 -
三. MySQL主从复制与读写分离简单介绍
为了提高并发量通常会对数据库进行主从架构设计,主库负责接收增删改的写请求,从库只负责读请求主库在对数据进行增删改操作时,mysql除了处理数据意外还会记录一个biniog日志在配置读写分离时,从库连接主库,主库后台会开启一个IO线程连接从库,在通过主库对数据进行增删改操作时,会记录biniog日志,主库通过io线程读取biniog日志,发送给从库,从库接收biniog日志信息将数据写入relay日志中,从库中开启SQL线程读取relay日志,将数据写入库中,进而做到数据同步,从库读取biniog到..原创 2023-03-30 11:43:44 · 75 阅读 · 0 评论 -
二. MySQL 存储函数与存储过程
目录一. 基础一. 基础mysql 函数: 一组预先编译好的SQL语句集合,提高代码的可重用性,简化操作,减少编译次数合数据可连接次数,提高效率,与存储过程的区别存储过程可以有0个或多个返回值,适合批量操作,例如批量插入,批量更新等等函数:有,且仅有1个返回值,适合做处理数据后返回一个结果的函数的创建调用语法与注意点示例1(无入参,有返回值)示例 2(有入参有返回值)函数的查看与删除............原创 2023-03-30 10:34:47 · 109 阅读 · 0 评论 -
一. MySQL 基础架构简介与SQL执行
mysql中在架构角度分为: 连接层, 服务层, 存储引擎层, 文件与日志系统层几个部分。原创 2023-03-30 10:29:40 · 105 阅读 · 1 评论