![](https://img-blog.csdnimg.cn/direct/94ae94ffb2134940ba3b3bd4a7e5867e.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql
Mysql学习知识分享
丢了尾巴的猴子
在这个世界上,一切都预先被谅解了,一切也就被卑鄙的许可了
展开
-
MySQL锁
在 MySQL 中,当发生死锁时,MySQL 使用一种叫做"最小成本回滚"(InnoDB 中称为"最小编号事务回滚")的策略来选择一个事务作为牺牲者并进行回滚,最小成本回滚策略是 MySQL 的默认行为,它会自动选择牺牲者并回滚事务。最小成本回滚策略的原理是选择最小成本的事务作为牺牲者。转载 2024-04-17 08:22:35 · 37 阅读 · 0 评论 -
表设计的18条军规 - 掘金
对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。通常情况下,建库的频率比建表要低很多,所以,我们这篇文章主要讨论建表相关的内容。如果我们在建表的时候不注意细节,等后面系统上线之后,表的维护成本变得非常高,而且很容易踩坑。今天就跟大家一起聊聊,数据库建表的18个小技巧。转载 2024-04-07 11:13:47 · 32 阅读 · 0 评论 -
MYSQL 组合索引在B+树数据结构中是如何排序的 (最左匹配原则底层原理)
1原创 2021-06-08 18:46:05 · 2231 阅读 · 7 评论 -
MYSQL - 读写锁
从邮箱中读取数据没有这样的麻烦,即使同一时刻多个用户并发读取也不会有什么问题。因为读取不会修改数据,所以不会出错。但如果某个客户正在读取邮箱,同时另外一个用户试图删除编号为25的邮件,会产生什么结果?结论是不确定,读的客户可能会报错退出,也可能读取到不一致的邮箱数据。所以,为安全起见,即使是读取邮箱也需要特别注意。如果把上述的邮箱当成数据库中的一张表,把邮件当成表中的一行记录,就很容易看出,同样的问题依然存在。从很多方面来说,邮箱就是一张简单的数据库表。修改数据库表中的记录,和删除或者.原创 2021-06-23 11:42:55 · 518 阅读 · 0 评论 -
MYSQL like模糊查询,%在前面索引为什么会失效 (最左前缀底层原理)
2原创 2021-06-09 18:37:31 · 6350 阅读 · 2 评论 -
SQL中explaind 详解
explaind包含的信息id、select_type、table、type、possible_keys、key、key_len、ref、rows、ExtraId决定表的读取顺序,有三种情况(1)id相同,表执行顺序由上到下,与sql中顺序无关(2)id不同,id的序号递增,id值越大优先级越高,越先被执行(3)id相同有不同,id 如果相同,可以认为是一组,从上往下顺序执行;(衍生 = derived)在所有组中,id值越大,优先级越高,越先执行selec...原创 2021-06-07 19:28:51 · 419 阅读 · 0 评论 -
MYSQL - 锁粒度
锁粒度所谓的锁策略,就是在锁的开销和数据的安全性之间寻求平衡,这种平衡当然也会影响到性能。大多数商业数据库系统没有提供更多的选择,一般都是在表上施加行级锁(rowevel lock),并以各种复杂的方式来实现,以便在锁比较多的情况下尽可能地提供更好的性能。而MysαL则提供了多种选择。每种 MySQL存储引擎都可以实现自己的锁策略和锁粒度。在存储引擎的设计中,锁管理是个非常重要的决定。将锁粒度固定在某个级别,可以为某些特定的应用场景提供更好的性能,但同时却会失去对另外一些应用场景的良好支持好在 MyS原创 2021-06-23 11:35:39 · 420 阅读 · 0 评论 -
MYSQL - 聚簇索引与非聚簇索引
假设一种情况:我们使用的是Mysql数据库,有两张表如图User表采用的存储引擎为InnoDB,Student表采用的存储引擎为MySIAM,索引的数据结构都为B+树。如果我们没有设置索引,mysql会主动选择主键作为主键索引,如果没有主键,mysql会扫描每一列的数据,找到没有重复数据的那一列的字段作为唯一索引,如果没有找到,mysql会生成一个隐藏主键索引,来维护数据。两张表我们都设置了主键。InnoDB在本地会生成两个文件:xxxx.firm,存储表信息;xxxx.idb,存储原创 2021-05-28 14:51:41 · 105 阅读 · 1 评论 -
MYSQL 主键索引和辅助索引
如上图User表,id为主键,name为普通字段。如果将id和name设置为索引,id是主键索引,name为普通索引,也叫做辅助索引。他们之间有什么区别呢?InnoDB在InnoDB存储引擎的B+树的数据结构下,主键索引下跟着的是数据信息,而辅助索引下跟着的是主键的id。如图所示:使用主键索引查询的时候,可直接取到数据。使用主键索引查询的时候,要先得到主键索引值,再根据索引值去匹配数据。MYISAM...原创 2021-06-07 18:36:26 · 1972 阅读 · 5 评论 -
mysql 主从同步
mysql 主从同步 · 语雀以docker部署mysql为例文档:https://...https://www.yuque.com/meadel/blog/sd0qsk原创 2021-09-15 16:03:55 · 55 阅读 · 0 评论 -
MYSQL InnoDB存储引擎下,什么时候用表锁?什么时候用行锁?
InnoDB行锁是通过索引上的索引项来实现的,这一点Mysql与Oracle不同,后者是通过数据块中对相应数据行加锁来实现的,而InnoDB这种锁实现的特点意味着:只有通过索引条件检索数据,InnoDB才会使用行锁,负责使用表锁。...原创 2021-06-13 14:18:13 · 1362 阅读 · 1 评论 -
MYSQL - 慢查询日志
查看是否开始慢查询日志命令: show variables like '%slow_query_log%';ON开启,OFF关闭如何开启慢查询日志命令:set global slow_query_log = 1;慢查询日志位置命令:show variables like '%slow%';查看慢查询时间命令:show variables like 'long_query_time';默认:10s设置慢查询时间命令:set global long_query_time=4;原创 2021-06-28 13:37:41 · 361 阅读 · 2 评论 -
MYSQL 中 OR 走不走索引
目录添加a、b独立索引添加a、b组合索引新建表test01,字段:id、a、b、c添加a、b独立索引EXPLAIN SELECT * FROM test01 WHERE a = 1 OR b = '1';不走索引EXPLAIN SELECT * FROM test01 WHERE a = 1 OR a = 2;走索引EXPLAIN SELECT * FROM test01 WHERE b = '1' OR a = 1 ;不走索引EXPLA...原创 2022-01-19 09:43:19 · 7175 阅读 · 4 评论 -
【面试】MYSQL 你是如何调优的?
答:大部分mysql的优化都是问题出现之后再根据实际情况开始调整,但是在进行数据库设计的时候,就应该考虑到优化的问题,比如表的设计,schema的设计,数据库的分库分表,都是要提前准备的,但是在准备之前总会有些纰漏,在这种情况下,就需要根据实际情况来进行调整。我之前做mysql调优的时候,基本上是从以下几个维度考虑的,分别是:执行计划、索引的使用情况、sql语句的调优、性能的监控、sql语句的调整、参数的调整这几个方面开始入手的。就拿我之前做的xxx项目来说,当时遇到了 xxx 问题,通过 设计索引、.原创 2021-06-14 09:02:38 · 159 阅读 · 0 评论 -
【查询性能优化】- 查询执行的基础
Mysql客户端/服务器通信协议查询缓存查询优化处理...原创 2022-01-10 18:32:01 · 222 阅读 · 0 评论 -
【MYSQL面试题】MySQL的事务隔离级别有哪些?
此文介绍了MySQL的四大隔离级别,以及会带来的问题和问题的解决方式。原创 2021-12-24 16:58:03 · 907 阅读 · 0 评论 -
【MYSQL】高性能的索引策略 - 选择合适的索引列顺序
原创 2021-12-22 19:10:46 · 150 阅读 · 0 评论 -
【MYSQL】索引案例学习
目录支持多种过滤条件避免多个范围条件优化排序支持多种过滤条件避免多个范围条件优化排序原创 2021-12-23 11:13:57 · 208 阅读 · 0 评论 -
【查询性能优化】- 重构查询的方式
一个复杂查询还是多个简单查询切分查询分解关联查询原创 2021-12-27 15:55:31 · 236 阅读 · 0 评论 -
【MYSQL】维护索引和表
找到并修复损坏的表更新索引统计信息减少索引和数据碎片原创 2021-12-23 15:50:41 · 194 阅读 · 0 评论 -
【查询性能优化】- 慢查询基础:优化数据访问
是否向数据库请求了不需要的数据MYSQL是否扫描额外的记录原创 2021-12-27 11:30:09 · 353 阅读 · 0 评论 -
【mysql】 高性能的索引策略 - 覆盖索引
原创 2021-12-23 08:25:11 · 211 阅读 · 0 评论 -
【查询性能优化】- 为什么查询速度会这么慢
翻译 2021-12-27 10:43:14 · 52 阅读 · 0 评论 -
【MYSQL】高性能的索引策略 - 使用索引扫描来做排序
所谓前导列,就是在创建复合索引语句的第一列或者连续的多列。比如通过:CREATE INDEX comp_ind ON table1(x, y, z)创建索引,那么x,xy,xyz都是前导列,而yz,y,z这样的就不是。...原创 2021-12-23 19:00:00 · 235 阅读 · 0 评论 -
【mysql】 高性能的索引策略 - 聚簇索引
原创 2021-12-22 19:55:14 · 56 阅读 · 0 评论 -
【MYSQL】高性能的索引策略 - 压缩(前缀压缩)索引
原创 2021-12-23 09:09:39 · 231 阅读 · 0 评论 -
【MYSQL】高性能的索引策略 - 未使用的索引 + 索引和锁
目录未使用的索引索引和锁未使用的索引索引和锁原创 2021-12-23 10:44:05 · 418 阅读 · 0 评论 -
【MYSQL】高性能的索引策略 - 冗余和重复索引
原创 2021-12-23 10:24:40 · 67 阅读 · 0 评论 -
【查询性能优化】- 查询优化器的提示 (hint)
原创 2022-01-10 19:44:29 · 350 阅读 · 0 评论 -
【查询性能优化】- MYSQL查询优化器的局限性
关联子查询如何用好关联子查询UNION的限制索引合并优化等值传递并行执行哈希关联松散索引扫描最大值和最小值优化在同一个表上查询和更新...原创 2022-01-10 19:34:40 · 136 阅读 · 0 评论 -
【MYSQL】创建高性能的索引 - 总结
原创 2021-12-23 15:58:11 · 312 阅读 · 0 评论 -
事务并发与事务隔离
什么是事务的隔离性?两个人同时在一个画本上画画,过程中你一笔我一笔,那么最后最后画出来的一定是一个四不像,多个事务同时操作一个数据也会和上面的情况类似,所以为了让不同的事务之间相互不存在干扰,就需要对事务的操作进行隔离,事务的隔离性也就是将操作同一个数据的事务相互分离,让操作之间分开有序的执行用什么方式实现事务的隔离性通常数据库里都是采用锁的机制,保证事务之间的隔离性,在一个事务对数据进行修改的时候,首先会对该数据进行加锁,在当前事务没有释放锁之前,后续的事务是无法对该数据再次进行加锁的,所以其转载 2022-04-07 16:33:36 · 128 阅读 · 0 评论 -
Mysql 索引原理
一、什么是索引索引是一种利用某种规则的数据结构与实际数据的关系加快数据查找的功能;索引数据节点中有着实际文件的位置,因为索引是根据特定的规则和算法构建的,在查找的时候遵循索引的规则可以快速查找到对应数据的节点,从而达到快速查找数据的效果;其实宏观来说索引其实是一种概念而不是具体的某项技术,只是我们在某个技术中运用得比较广泛和鲜明(比如说数据库)渐渐的有了特定领域的标签,其实在生活中索引的使用无处不在,比如说:书本里的目录;读书时的座位号,考试编号都有类似索引的功能;总结来所有通过某规则数据结构和实际目转载 2022-04-07 16:26:36 · 209 阅读 · 0 评论 -
一文详解SQL关联子查询
Alibaba Java 技术图谱: https://developer.aliyun.com/article/878802?spm=a2c6h.12873581.0.dArticle878802.44867e04FDXkMY原文地址:https://developer.aliyun.com/article/783124?spm=a2c6h.24874632.0.0.21e53ccdPwXu9S**简介:**本文主要介绍什么是关联子查询以及如何将关联子查询改写为普通语义的sql查询。...转载 2022-03-25 22:12:50 · 1734 阅读 · 0 评论