October 2, 2021
mysql
概述锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。
锁分类
从性 ...
阅读更多
October 2, 2021
mysql
概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了锁机制、MVCC多版本并发控制隔离机制,解决多事务并发问 ...
阅读更多
September 30, 2021
mysql
表准备# 示例表:CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT N ...
阅读更多
September 27, 2021
mysql
Using filesort
当语句中使用到 order by 排序时,尽可能遵照索引键的最佳左前缀,在索引列上进行排序操作。
如果排序字段 不能通过索引树的排序时 就会出现 using filesort 文件排序。如下图执行语句。
EXPLAIN SELECT * from employ ...
阅读更多
September 24, 2021
mysql
in 与 exist
原则: 小表驱动大表 , 即小的数据集驱动大的数据集(A.id 索引字段)
in
当B表的数据集小于A表的数据集时,in优于exists
语句分析
select * from A where id in (select id from B)等价于for(selec ...
阅读更多
September 24, 2021
mysql
示例表参照 Order by与Group by优化
背景平时开发过程中在我们的业务系统实现分页功能 都会使用到如下sql实现
select * from employees limit 10000,10;
这条语句表示在 employees 中取出从 10001 行开始的 10 行记录。 ...
阅读更多
September 23, 2021
mysql
在看本篇文章时一起跟着操作更有感觉呦~
前期准备# 创建测试表CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT N ...
阅读更多
September 22, 2021
mysql
在看本篇文章时一起跟着操作更有感觉呦~
前期准备# 创建测试表CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(24) NOT N ...
阅读更多
September 21, 2021
mysql
trace工具
MySQL5.6版本后提供了对SQL的跟踪工具trace,通过使用trace可以让我们明白optimizer如何选择执行计划的。
⚠️开启trace工具会影响mysql性能,所以只能临时分析sql使用,用 完之后立即关闭
使用方式
开启 traceset session o ...
阅读更多
September 20, 2021
mysql
前期准备drop table if EXISTS `employees` ;CREATE TABLE `employees` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` va ...
阅读更多