mysql
文章平均质量分 91
Ethan_199402
这个作者很懒,什么都没留下…
展开
-
深度探索存储与检索
重新认识数据库和索引原创 2023-05-17 11:48:34 · 469 阅读 · 0 评论 -
MySQL数据库设计规范
1. 规范背景与目的MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。本规范旨在帮助或指导RD、QA、OP等技术人员做出适合线上业务的数据库设计。在数据库变更和处理流程、数据库表设计、SQL编写等方面予以规范,从而为公司业务系统稳定、健康地运行提供保障。2. 设计规范2.1 数据库设计以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。对于不满足【高危】和【强制原创 2022-01-13 16:11:02 · 243 阅读 · 0 评论 -
MySQL的锁机制 - 记录锁、间隙锁、临键锁
记录锁(Record Locks)记录锁是 封锁记录,记录锁也叫行锁,例如:SELECT * FROM test WHERE id=1 FOR UPDATE;它会在 id=1 的记录上加上记录锁,以阻止其他事务插入,更新,删除 id=1 这一行。间隙锁(Gap Locks)(重点)间隙锁是封锁索引记录中的间隔,或者第一条索引记录之前的范围,又或者最后一条索引记录之后的范围。产生间隙锁的条件(RR事务隔离级别下;):使用普通索引锁定;使用多列唯一索引;使用唯一索引锁定多行记录。以上情况,都转载 2021-04-02 10:51:59 · 615 阅读 · 0 评论 -
数据库索引,终于懂了
不少朋友留言问MySQL索引底层的实现,让我讲讲B+树。知其然,知其所以然,讲懂B+树其实不难,今天更多聊聊“数据库索引,为什么设计成这样”。问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)一楼放历史类,二楼放文学类,三楼放IT类…(2)IT类,又分软件类,硬件类…(3)软件类,又按照书名排序…以便快速找到一本书。与之类比,数据库存储了1000W条数据,要从中找到name=”shenji转载 2021-03-24 09:46:03 · 125 阅读 · 0 评论 -
Redis与数据库一致性问题分析
缓存已经在项目中被广泛使用,在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。所以参考了网上一些资料对这块进行讲解。先做一个说明,从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以...转载 2020-04-20 16:55:22 · 237 阅读 · 0 评论 -
mybatis实现公共字段填充
在表设计时,通常各个表有一些公共字段,比如主键、创建时间、最后修改时间等。这些字段如果都由开发人员去手动设置,一个是产生无用的代码,另外有可能规则不一致,造成错误。因此对于各个表的公用字段,一般会统一处理,MyBatis和Hibernate都有自身的拦截器,实现对应的接口,并配置即可。本文以MyBatis为例说明(mybatis-plus已经提供成熟代码)。假设各个表都有3个公共字段:id、gm...原创 2020-02-06 14:03:49 · 1667 阅读 · 0 评论 -
请不要再让count(*)背锅了,真的不比count(1)差
说count(*)慢的都应该看看自己在知识的路上是不是走得慢了函数介绍COUNT()是一个特殊的函数,有两种非常不同的作用:它可以统计某个列值的数量,也可以统计行数。在统计列值时要求列值是非空的(不统计NULL)。如果在COUNT()的括号中指定了列或者列的表达式,则统计的就是这个表达式有值的结果数。因为很多人对NULL理解有问题,所以这里很容易产生误解。如果想了解更多关于SQL语句中 NULL的含义,建议阅读一些关于SQL 语句基础的书籍。(关于这个话题,互联网上的一些信息是不够精确的。)CO原创 2020-12-14 11:04:52 · 400 阅读 · 0 评论 -
结合阿里规范 java开发手册解读mysql索引,怎么创建和使用高性能的索引
1【强制】在 varchar 字段上建立索引时,必须指定索引长度,没必要对全字段建立索引,根据实际文本区分度决定索引长度即可。索引部分字符的优点是节约索引空间,从而提高索引效率,但也会降低索引的选择性。选择性指不重复的索引值和数据表的记录总数的比值,范围从1/#T到1之间。索引的选择性越高则查询效率越高,因为选择性高的索引可以让 MySQL在查找时过滤掉更多的行。唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。整长度。数”应该接近于完整列的“基数”。但这样也会降低索引的选择性。索引的选原创 2020-09-04 16:28:59 · 406 阅读 · 1 评论 -
mysql 事务原理——mvcc详细原理,彻底搞懂可重复读和幻读
事务原理 mvcc,彻底搞到可重复读和幻读原创 2020-08-18 10:10:08 · 375 阅读 · 0 评论 -
limit入坑指南一:回表查询
limit 原理第一步.先查询offset+count条数据;第二步.再抛弃前offset条数据Limit效率高:数据库的数量很大,但是只需要查询一部分数据的情况。 高效率的原理是:避免全表扫描,提高查询效率。上图员工表的查询即全表扫描,那么怎么避免全表扫描加上LIMIT 1,只要找到了对应的一条记录,就不会继续向下扫描了,效率会大大提高。imit的效率低:只使用limit来查询语句,并且偏移量特别大的情况 现在有一个订单表,数据量达到千万级表(真正不会这么查询,这里只是举例)语句1原创 2020-07-31 10:48:22 · 1012 阅读 · 0 评论