查看是否有锁现象 ## 1. 看有没有锁等待 SHOW STATUS LIKE 'innodb_row_lock%'; ## 2. 查看哪个事务在等待(被阻塞了) USE information_schema SELECT * FROM information_schema.INNODB_TRX W ...
分类:
数据库 时间:
2020-07-10 20:42:20
阅读次数:
87
1)count(*)会忽略所有的列,直接统计所有列数,不要使用count(列名),也就是不要使用count(1),count(id) 2)可以使用explain查询近似值,用近似值替代count(*) 3)使用缓存,记录总数 4)允许的话,把innodb改为myisam 5)SELECT (SELE ...
分类:
数据库 时间:
2020-07-10 18:48:16
阅读次数:
75
MySQL innodb线程 一、master therad ①、刷新脏页到磁盘 ②、将日志缓冲刷新到磁盘 ③、undo页回收 ④、合并插入缓冲 参数innodb_io_capacity表示每秒刷新脏页的数量,默认为200。 innodb_max_dirty_pages_pct设置出发刷盘的脏页百分 ...
分类:
数据库 时间:
2020-07-10 11:46:22
阅读次数:
53
MySQL 索引重建 当你对InnoDB进行修改操作时,例如删除一些行,这些行只是被标记为“已删除”,而不是真的从索引中物理删除了,因而空间也没有真的被释放回收。 InnoDB的Purge线程会异步的来清理这些没用的索引键和行,但是依然没有把这些释放出来的空间还给操作系统重新使用,因而会导致页面中存 ...
分类:
数据库 时间:
2020-07-10 11:21:42
阅读次数:
79
当执行 SQL语句删除行时,InnoDB不会立即从数据库中物理删除。 仅当InnoDB 丢弃 为删除而编写的undo log 时,才会物理删除行及其索引记录(删除对应数据文件中的记录和索引)。 这种仅发生在不再需要多版本并发控制(MVCC)或回滚之后的删除操作,称为purge。 purge 操作用于 ...
分类:
数据库 时间:
2020-07-09 00:41:03
阅读次数:
106
1.Memory用的是hash index,但是InnoDB和MyISAM用的是B+树,不用二叉树的原因就是深度可能过深,深度过深影响查询和IO性能; 2.索引使用树的过程: BST:二分查找,不平衡AVL:二叉平衡树,最长子树和最短子树的高度之差不能超过1,数据越多,旋转越多,插入删除效率极低,查 ...
分类:
数据库 时间:
2020-07-08 15:06:03
阅读次数:
70
MariaDB 10.0.8增加了一种新的执行计划——Extended Keys。 它充分利用了InnoDB的隐藏列来做执行计划,因为我们都知道InnoDB的索引组织表会把主键放在最末尾,所以实际上每个索引最后都包含了主键。 打开和关闭这个优化器选项的命令如下: Enable: set optimi ...
分类:
数据库 时间:
2020-07-07 23:34:09
阅读次数:
66
myIsam引擎把一个表的总行数存在了磁盘上,因此执行count(*)会直接返回结果,效率很高 #但是myisam不支持事物 innodb引擎需要把数据一行行从引擎里读出来,然后计数累加。 innodb由于多版本并发控制机制,同一时刻不同回话拿到的结果可能都不相同,所以不能直接将总行数存储在磁盘上。 ...
分类:
数据库 时间:
2020-07-07 19:56:37
阅读次数:
130
update语句是如何执行 , 如何将执行后的新数据持久化在磁盘中 可以假设两种情境: 1. 假设MySQL在更新之后只更新内存中的数据就返回,然后再某一时刻进行IO将数据页持久化。这样所有操作都是在内存中,可以想象此时的MySQL性能是特别高的。但是,如果在更新完内存又还没有进行持久化的这段时间, ...
分类:
数据库 时间:
2020-07-07 13:08:20
阅读次数:
63
前面一文 mysql锁 介绍了mysql innodb存储引擎的各种锁,本文介绍一下innodb存储引擎的间隙锁,就以下问题展开讨论 1.什么是间隙锁?间隙锁是怎样产生的? 2.间隙锁有什么作用? 3.使用间隙锁有什么隐患? 一、间隙锁的基本概念 1.什么叫间隙锁 当我们用范围条件而不是相等条件检索 ...
分类:
数据库 时间:
2020-07-07 09:27:02
阅读次数:
69