月球程序猿
无比自信之人生,永不言弃之魄力。
展开
-
08‐Mysql全局优化与Mysql 8.0新特详解
SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间。原创 2023-12-18 14:31:29 · 1248 阅读 · 0 评论 -
07‐Innodb底层原理与Mysql日志机制深入剖析
的话题,假设我们把数据库所有数据都删除了要怎么恢复了,如果数据库之前没有备份,所有的binlog日志都在的话,就从binlog第一个文件开始逐个恢复每个binlog文件里的数据,这种一般不太可能,因为binlog日志比较大,早期的binlog文件会定期删除的,所以一般不可能用binlog文件恢复整个数据库的。开始执行的时候,要先判断一下你对这个表 T 有没有执行查询的权限,如果没有,就会返回没有权限的错误,如下所示 (在工程实现上,如果命中查询缓存,会在查询缓存返回结果的时候,做权限验证)。原创 2023-12-15 16:52:42 · 936 阅读 · 0 评论 -
06-Mysql锁机制与优化实践以及MVCC底层原理剖析
MyISAM在执行查询语句SELECT前,会自动给涉及的所有表加读锁,在执行update、insert、delete操作会自动给涉及的表加写锁。InnoDB在执行查询语句SELECT时(非串行隔离级别),不会加锁。但是update、insert、delete操作会加行锁。另外,读锁会阻塞写,但是不会阻塞读。而写锁则会把读和写都阻塞。Innodb存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面所带来的性能损耗可能比表级锁定会要更高一下,但是在整体并发处理能力方面要远远优于MYISAM的表级锁定的。原创 2023-12-14 00:18:42 · 45 阅读 · 0 评论 -
05-Mysql事务原理与优化最佳实践
我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制锁机制MVCC多版本并发控制隔离机制日志机制,用一整套机制来解决多事务并发问题。接下来的,我们会深入讲解这些机制,让大家彻底理解数据库内部的执行原理。原创 2023-12-13 23:25:20 · 41 阅读 · 0 评论 -
04-Mysql索引优化实战(下)
在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与 join 的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表。原创 2023-11-30 20:52:23 · 29 阅读 · 0 评论 -
03-Mysql索引优化实战(上)
对于辅助的联合索引(name,age,position),正常情况按照最左前缀原则,这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age和position是无序的,无法很好的利用索引。在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是‘LiLei’ 开头的索引,然后拿这些索引对应的主键逐个回表,到主键索引上找出相应的记录,再比对age和position这两个字段的值是否符合。MySQL 5.6引入了索引下推优化,原创 2023-11-30 15:10:22 · 37 阅读 · 0 评论 -
02-Explain详解与索引最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。原创 2023-10-28 01:29:20 · 52 阅读 · 0 评论 -
01-深入理解Mysql索引底层数据结构与算法
执行sql> show global status like ‘Innodb_page_size’;千万级数据只需三层,实际上,mysql会将索引树的根节点存储到内存中更快速查找。以bigint为8B为例,非叶子节点中索引8B+指针6B=14B,叶子节点中8B+data假设1K,16K/1K=16个索引值,此时B+Tree存储满时,共存储索引:1170。为了保证每个节点存储更多的索引值。1024/14=1170个索引值。1170*16=2千多万,共16KB/14B=16。原创 2023-10-27 03:24:07 · 50 阅读 · 0 评论