MySQL
生如逆旅单行道,哪有岁月可回首。
雪孤城
所念皆星河,所系皆山河
展开
-
MySQL之MVCC机制
1. MVCC概念MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。在Mysql的InnoDB引擎中就是指在已提交读(READ COMMITTD)和可重复读(REPEATABLE READ)这两种隔离级别下的事务对于SELECT操作会访问版本链中的记录的过程。这就使得别的事务可以修改这条记录,因为每次修改都会在版本链中记录。SELECT可以去版本链中原创 2020-12-04 11:42:02 · 25921 阅读 · 0 评论 -
MySQL的事务和锁
1.事务1.1 事务概念事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性:原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性隔离性(Isolation) :数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之原创 2020-12-02 15:50:12 · 126 阅读 · 0 评论 -
MySQL之索引优化(二)
1.分页查询优化例: select * from employees limit 10000,10;表示从表 employees 中取出从 10001 行开始的 10 行记录实际这条 SQL 是先读取 10010 条记录,然后抛弃前 10000 条记录,然后返回后面 10 条想要的数据。因此要查询一张大表比较靠后的数据,执行效率是非常低的1. 根据自增且连续的主键排序的分页查询select * from employees limit 90000,5;该 SQL 表示查询从第 90001开原创 2020-11-30 11:45:51 · 117 阅读 · 0 评论 -
MySQL之索引优化(一)
1. 联合索引和模糊查询的常见问题1.1 联合索引第一个字段用范围导致不会走索引的情况联合索引第一个字段就用范围查找不会走索引,mysql内部可能觉得第一个字段就用范围,结果集应该很大,回表效率不高,还不如就全表扫描注意:employees数据偏少时会走索引(测试employees表一万多条测试数据)在mysql内部没有走索引的情况下,强制该范围查询走索引的话,效率提升并不大,因为回表效率不高。优化方案:覆盖索引优化。尽量让索引覆盖查询的字段1.2 in和or在表数据量比较大的情况会走索原创 2020-11-29 22:20:34 · 293 阅读 · 0 评论 -
MySQL执行一条sql的流程
1.MySQL的内部组件结构1.1 Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。1.2 Store层(引擎层)存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储原创 2020-11-27 10:40:26 · 129 阅读 · 0 评论 -
MySQL之Explain的使用
1.介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中注意:在查询中的每个表会输出一行,如果有两个表通过 join 连接查询,那么会输出两行2.EXPLAIN的两个变种2.1 explain extended会在 explain 的基础上额原创 2020-11-26 17:41:47 · 129 阅读 · 0 评论 -
MySQL索引
1.索引简介在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。数据库使用索引以找到特定值,然后顺指针找到包含该值的行。这样可以使对应于表的SQL语句执行得更快,可快速访问数据库表中的特定信息。当表中有大量记录时,若要对表进行查原创 2020-11-25 17:15:44 · 25292 阅读 · 0 评论