MySQL
文章平均质量分 91
Redick01
Dromara开源社区Committer,开源项目Apache Shenyu贡献者,致力于后端,分布式,微服务,Service Mesh等技术!
展开
-
MySQL InnoDB下的锁问题
InnoDB的行锁是基于索引实现的,如果不通过索引加锁访问数据,InnoDB会对所有数据加锁。在不同隔离级别下,InnoDB的锁机制和一致性读取策略不通。介绍了Next-Key锁机制,以及InnoDB使用Next-Key锁的原因。精心设计索引,并尽量使用索引访问数据,使加锁的粒度更小,从而减少锁冲突的机会。选择合理的事务,小事务发生死锁的概率小。尽量使用相等的条件访问数据,避免Next-Key锁对并发插入的影响。避免死锁的一些常用方法。原创 2023-03-29 18:26:33 · 693 阅读 · 1 评论 -
通过MySQL驱动拦截器实现执行sql耗时计算
日志组件要支持MySQL的sql执行时间打印,要实现链路追踪常用的手段就是实现第三方框架或工具提供的拦截器接口或者是过滤器接口,对于MySQL也不例外,实际上就是实现了MySQL驱动的拦截器接口而已原创 2023-02-28 18:50:54 · 727 阅读 · 0 评论 -
MySQL InnoDB下的锁问题
背景知识 InnoDB相比较MyISAM一是支持事务,二是支持了行级锁,提到InnoDB锁问题就不得不提到事务,所以在这之前先了解下事务的一些知识事务及其ACID属性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说原创 2021-09-06 17:19:00 · 355 阅读 · 0 评论 -
MySQL-SQL语句优化
大批量插入数据MyISAM引擎 通过load命令可以导入数据,适当的设置可以提高load命令的导入速度,DSIABLE KEYS和ENABLE KEYS 用来关闭和打开MyISAM表非唯一索引的更新,导入大量数据到非空的表关闭非唯一索引可以提高load的效率,再load完成后打开非唯一索引即可。对于一个空的表导入大量数据可以不必有此操作因为默认是先导入数据然后才创建索引。InnoDB导入数据按照主键顺序排列,可以有效地提高导入数据效率在导入数据前执行SET UN原创 2021-08-31 18:25:43 · 167 阅读 · 0 评论 -
MySQL单表数据量过千万,采坑优化记录,完美解决方案
问题概述 使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!! 我尝试解决该问题,so,有个这个日志。 方案概述 方案一:优化现...转载 2021-08-31 17:33:44 · 3022 阅读 · 0 评论 -
MySql索引失效
文章目录简介MySql索引失效验证测试用DDL和DML全值匹配(索引最佳)违反最左原则在索引列上做任何操作索引范围条件右边的索引列会失效尽量使用覆盖索引使用不等于(!=、<>)(除覆盖索引外)like以通配符开头('%abc')字符串不加单引号索引失效(数据类型隐式转换)or连接索引失效order bygroup by查看索引使用情况简介 索引对于MySql来说是相当重要的,合理的使用索引能够提高查询效率,MySql支持的所有有主键索引、唯一索引、联合索引、全文索引原创 2021-08-24 15:11:48 · 169 阅读 · 0 评论 -
MySQL-SQL优化分析
文章目录优化sql语句的一般步骤总结优化sql语句的一般步骤show status命令show status命令能统计SQL的执行频率语法:-- 显示当前session中所有统计参数的值show status like 'com_%';show status可以指定参数用于统计特定SQL操作的执行频率,如:Com_XXX的方式,XXX可以是select,delete,update,insert等;show status也可以指定统计存储引擎,如:Innodb_row_read执行sel原创 2021-08-21 20:01:37 · 217 阅读 · 0 评论