兰州建设工程信息网站,扬州市城市建设监察支队网站,无站点推广就是不在网上推广,湖北省建设厅网站杨凯你对MySQL执行计划怎么看
执行计划就是SQL的执行查询的顺序#xff0c;以及如何使用索引查询#xff0c;返回的结果集的行数
在MySQL中#xff0c;我们可以通过explain命令来查看执行计划。其语法如下#xff1a;
EXPLAIN SELECT * FROM table_name WHERE conditions;在…你对MySQL执行计划怎么看
执行计划就是SQL的执行查询的顺序以及如何使用索引查询返回的结果集的行数
在MySQL中我们可以通过explain命令来查看执行计划。其语法如下
EXPLAIN SELECT * FROM table_name WHERE conditions;在执行该命令后MySQL将返回一张表格用于展示查询的执行计划。其中包括以下几个重要字段
id每个查询都有一个唯一的id用于标识这个查询select_type表示查询类型主要分为简单查询、联合查询、子查询等table表示查询涉及到的表名partitions表示涉及到的分区type表示表的访问类型包括ALL全表扫描、index索引扫描、range索引范围扫描、ref非唯一索引扫描、eq_ref唯一索引扫描等possible_keys表示可用的索引keyMySQL选择使用的索引key_len表示索引字段长度ref表示索引被哪个字段或常量所引用rows表示MySQL根据表统计信息估算出的查询结果集的行数filtered表示通过条件过滤后的结果集占总结果集的百分比Extra包含MySQL执行计划中的其他信息例如是否使用了临时表、是否使用了文件排序等。执行效率ALLindexrangeeq_refconstsystem
事务的基本特性和隔离级别
事务的基本特性ACID分别:原子性一致性隔离性持久性。
原子性指的是一个事务中的操作要么全部成功要么全部失败。
一致性指的是数据库总是从一个一致性的状态转换到另外一个一致性的状态。
隔离性指的是一个事务的修改在最总提交前对其他事务是不可见的。
持久性指的是一旦事务提交所作的修改就会永久保存到数据库中。 隔离级别
read uncommit 读未提交可能会读到其他事务未提交的数据也叫脏读
read commit 读已提交两次读取结果不一致叫不可重复读解决脏读问题
repeatable read 可重复复读MySQL的默认级别每次读取结果都一样但可能产生幻读
serializable 串行一般不使用会给每一行读取的数据加锁导致大量超时和锁竞争的问题
对慢查询都有怎样的优化过
优化首先要清楚慢的原因查询条件没有命中索引loadl不需要的数据列数据量太大
所以优化也是针对这个三个方向来进行优化的
首先分析语句是否load了额外的数据可能时出现呢了多余的行并且抛弃掉了可能是加载了许多不需要的列对语句进行分析以及重写
分析语句的执行计划如何获得使用索引的情况之后修改语句或者修改索引使得语句可以尽可能的命中索引
如果对语句的优化无法进行可以考虑表中的数据量是否太大进行横向或者纵向的分表
ACID靠什么保证的
A原子性是由undo log日志保证他记录了需要回滚的日志信息事务回滚时撤销以及执行成功的sql
C一致性是由其他三个特性保证程序代码要保证业务的上的一致性
I隔离性偶MVCC来保证
D持久性由内存redo log来保证MySQL修改数据同时在内存和redo log记录这次操作发生宕机可以从redo log恢复 InnoDB redo log写盘InnoDB事务进入prepare状态。 如果prepare成功binlog写盘再继续将事务日志持久化到binlog如果持久化成功那么InnoDB事务则进入commit状态在redo log里面写入一个commit记录redo log的刷盘会在系统空闲时进行