
mysql
文章平均质量分 91
啊卡无敌
这个作者很懒,什么都没留下…
展开
-
explain 详解
使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈。在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL。注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。原创 2022-12-22 19:11:06 · 346 阅读 · 1 评论 -
Mysql生成环境常见问题及解决方案
max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。max_connections参数,用来控制一个MySQL实例同时存在的连接数的上限,超过这个值,系统就会拒绝接下来的连接请求,并报错提示“Too many connections”。有的业务代码会在短时间内先大量申请数据库连接做备用,如果现在数据库确认是被连接行为打挂了,那么一种可能的做法,是让数据库跳过权限验证阶段。原创 2022-12-13 23:15:50 · 344 阅读 · 0 评论 -
幻读与间隙锁
幻读指的是一个事务在前后两次查询同一个范围的时候,后一次查询看到了前一次查询没有看到的行。幻读的相关说明:在可重复读隔离级别下,普通的查询是快照读,是不会看到别的事务插入的数据的。因此,幻读在“当前读”下才会出现。上面session B的修改结果,被session A之后的select语句用“当前读”看到,不能称为幻读。幻读仅专指“新插入的行”。原创 2022-12-13 22:08:31 · 443 阅读 · 0 评论 -
简单的sql语句 执行特别慢
为了便于描述,我先构造一个表,基于这个表来说明今天的问题。这个表有两个字段id和c,并且我在里面插入了10万行记录。第一类:查询长时间不返回执行下面的SQL语句一般碰到这种情况的话,大概率是表t被锁住了。接下来分析原因的时候,一般都是首先执行一下show processlist命令,看看当前语句处于什么状态。然后我们再针对每种状态,去分析它们产生的原因、如何复现,以及如何处理。使用 show processlist 命令查看出现这个状态表示的是,现在有一个线程正在表t上请求或者持有MDL写锁,把s原创 2022-12-06 22:48:00 · 432 阅读 · 0 评论 -
导致性能下降的sql语句
假设你现在维护了一个交易系统,其中交易记录表tradelog包含交易流水号(tradeid)、交易员id(operator)、交易时间(t_modified)等字段。为了便于描述,我们先忽略其他字段。这个表的建表语句如下:假设,现在已经记录了从2016年初到2018年底的所有数据,运营部门有一个需求是,要统计发生在所有年份中7月份的交易记录总数。这个逻辑看上去并不复杂,你的SQL语句可能会这么写:key="t_modified"表示的是,使用了t_modified这个索引;我在测试表数据中插入了10万原创 2022-12-06 22:26:05 · 906 阅读 · 1 评论 -
order by 工作流程与随机排序
按name排序”这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数sort_buffer_size。MySQL将需要排序的数据分成12份,每一份单独排序后存在这些临时文件中。然后把这12个有序文件再合并成一个有序的大文件。mysql会通过遍历索引将满足条件的数据读取到sort_buffer,并且按照排序字段进行快速排序1>如果查询的字段不包含在辅助索引中,需要按照辅助索引记录的主键返回聚集索引取出所需字段2>该方式会造成随机IO,在MySQL5.6提供了MRR的机制,会将原创 2022-12-06 18:42:18 · 1023 阅读 · 0 评论 -
MySQL count语句查询
今天,我们就来聊聊count(*)语句到底是怎样实现的,以及MySQL为什么会这么实现。原创 2022-12-02 22:58:06 · 1607 阅读 · 0 评论 -
binlog(归档日志)和redo log(重做日志)
今天我们再从整体的角度去看一下 mysql的binlog(归档日志)和redo log(重做日志)。先说一下在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎么保证数据完整性的?如果在图中时刻A的地方,也就是写入redo log 处于prepare阶段之后、写binlog之前,发生了崩溃(crash),由于此时binlog还没写,redo log也还没提交,所以崩溃恢复的时候,这个事务会回滚。这时候,binlog还没写,所以也不会传到备库。到这里,大家都可以理解。原创 2022-12-02 22:40:06 · 1036 阅读 · 0 评论 -
MySQL表空间回收
今天,我就和你聊聊数据库表的空间回收,为什么简单地删除表数据达不到表空间回收的效果,然后再和你介绍正确回收空间的方法。我们要彻底搞明白这个问题的话,就要从数据删除流程说起了。原创 2022-11-30 23:19:13 · 1427 阅读 · 0 评论 -
MySql数据库的flush
mysql flush 的过程及相关操作对数据库性能影响原创 2022-11-29 22:50:31 · 5239 阅读 · 0 评论 -
如何给字符串字段加索引
当要给字符串创建前缀索引时,有什么方法能够确定我应该使用多长的前缀呢?我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀。原创 2022-11-28 22:22:51 · 1055 阅读 · 0 评论 -
MySQL如何选择索引
MySQL中一张表其实是可以支持多个索引的。但是,你写SQL语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL来确定的。我们先建一个简单的表,表里有a、b两个字段,并分别建上索引然后,我们往表t中插入10万行记录,取值按整数递增,即:(1,1,1),(2,2,2),(3,3,3) 直到(100000,100000,100000)。接下来,我们分析一条SQL语句:图1 使用explain命令查看语句执行情况。原创 2022-11-28 21:32:56 · 1815 阅读 · 0 评论 -
普通索引,唯一索引与change buffer
相信大家都了解了唯一索引和普通索引的区别。今天我们就继续来谈谈,在不同的业务场景下,应该选择普通索引,还是唯一索引?假设你在维护一个市民系统,每个人都有一个唯一的身份证号,而且业务代码已经保证了不会写入两个重复的身份证号。由于身份证号字段比较大,我不建议你把身份证号当做主键,那么现在你有两个选择,要么给id_card字段创建唯一索引,要么创建一个普通索引。如果业务代码已经保证了不会写入重复的身份证号,那么这两个选择逻辑上都是正确的。从性能的角度考虑,你选择唯一索引还是普通索引呢?选择的依据是什么呢?原创 2022-11-23 23:46:51 · 829 阅读 · 0 评论 -
MySql 全局锁 表级锁 行锁
如果执行FTWRL命令之后由于客户端发生异常断开,那么MySQL会自动释放这个全局锁,整个库回到可以正常更新的状态。而将整个库设置为readonly之后,如果客户端发生异常,则数据库就会一直保持readonly状态,这样会导致整个库长时间处于不可写状态,风险较高。官方自带的逻辑备份工具mysqldump,当mysqldump使用参数–single-transaction的时候,会启动一个事务,确保拿到一致性视图。MDL 会直到事务提交才会释放,在做表结构变更的时候,一定要小心不要导致锁住线上查询和更新。原创 2022-11-18 22:04:42 · 1037 阅读 · 0 评论 -
MySql 联合索引 与 最左前缀
回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID from T where k between 3 and 5在引擎内部使用覆盖索引在索引K上其实读了三个记录,R3~R5(对应的索引k上的记录项),但对于MySQL的Server层来说,它就是找引擎拿到了两条记录,因此MySQL认为扫描行数是2最左前缀原则:B+Tree这种索引结构,可以利用索引的"最左前缀"来定位记录只要满足最左前缀,就可以利用索引来加速检索。最左前缀可以是联合索引原创 2022-11-17 22:28:27 · 856 阅读 · 0 评论 -
MySql数据库索引及数据结构
1.索引的作⽤:提⾼数据查询效率2.常见索引模型:哈希表、有序数组、搜索树3.哈希表:键 - 值(key - value)。4.哈希思路:把值放在数组⾥,⽤⼀个哈希函数把key换算成⼀个确定的位置,然后把value放在数组的这个位置5.哈希冲突的处理办法:链表6.哈希表适⽤场景:只有等值查询的场景7.有序数组:按顺序存储。查询⽤⼆分法就可以快速查询,时间复杂度是:O(log(N))8.有序数组查询效率⾼,更新效率低9.有序数组的适⽤场景:静态存储引擎。原创 2022-11-16 23:14:02 · 1003 阅读 · 0 评论 -
SQL语句的内部执行流程
MYSQL执行流程原创 2022-11-15 22:22:59 · 918 阅读 · 1 评论 -
MySql事务隔离
提到事务,你肯定会想到(Atomicity、Consistency、Isolation、Durability,即原⼦性、⼀致性、隔离性、持久性),今天我们就来说说其中,也就是“”。原创 2022-11-16 21:12:41 · 1774 阅读 · 7 评论