![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
孤竹彧
一个想进步,又控制不住自己的小码农
展开
-
数据库主从复制
1.从库生成两个线程,一个 I/O 线程,一个 SQL 线程2.当从库连接主库时,主库会生成一个 二进制转储(binlog dump) 线程,用来给从库 I/O 线程传 binlog3.I/O 线程去请求主库的 binlog,并将得到的 binlog 日志写到 relay log(中继日志) 文件中。(在读取 binlog 的内容的操作中,会对主库的 binlog 加锁,当binlog读取完成并发送给从库后解锁。原创 2023-03-28 21:26:40 · 199 阅读 · 0 评论 -
MVCC机制
RR下MVCC可以解决不可重复读,无法解决幻读原创 2023-03-26 21:39:47 · 247 阅读 · 0 评论 -
从深分页查询到覆盖索引
id是聚簇索引,如果遍历ID索引的结果就是,会遍历所有数据,所以使用idx_modify_time索引的**覆盖索引**机制,而i**dx_modify_time的顺序和id不一致**,所以出现查询到的结果不一原创 2023-03-08 13:28:08 · 383 阅读 · 0 评论 -
分库案例及ID生成规则
我这里只实现了静态分库,就是一开始就决定确定好有哪些数据库,和有哪些表要分库1.配置文件需要移除原本的数据库配置加上shardingsphereshardingsphere: datasource: names: ds0,ds1 ds0: name: ds0 type: ${spring.datasource.type} driverClassName: ${spring.datasource.driver-class-name}原创 2022-04-28 15:52:27 · 1120 阅读 · 0 评论 -
事务因Propagation.REQUIRES_NEW导致的bug分析
开发时候,遇到一个奇葩问题,单独部署(3情况)不会出现bug,而合并打包(4情况)时候,反而出现异常具体该不该加事务,该加怎样的事务,都要具体问题具体考虑,不能因为需要实现一个功能,导致其他的bug原创 2021-09-24 17:00:28 · 1595 阅读 · 0 评论 -
缓存和数据库一致性问题解决方案
缓存是减轻数据库压力的一种解决办法,不过要做到缓存和数据库数据一致性。给缓存设置过期时间,是保证数据最终一致性的办法,我们也要尽量保证使用时候的一致性。一般不使用先更新缓存再更新数据库的方式,如果缓存更新成功而数据库更新失败,那肯定不行那基本就还剩如下三种1)先更新数据库,再更新缓存2)先删除缓存,再更新数据库3)先更新数据库,再删除缓存依次分析方法一:先更新数据库,再更新缓存这种方法其实还有很多项目在这么用,不过是最糟糕的选项。1、A更新数据库数据为a2、B更新数据库数据为b3、B原创 2021-03-02 18:30:19 · 274 阅读 · 1 评论 -
记录一次由Mysql不区分大小写引发的bug
简述一下:1)数据的code为:zztest;name为:测试。2)所以缓存保留的key为zztest,数据为:测试。3)查询时,以code为:zzTest进行查询,查询缓存失败,再去数据库查询,查询到一条数据,并保存到缓存中。4)此时缓存中有两条数据:{zztest,测试};{zzTest,测试}。5)后台修改zztest的数据为:上线;6)此时缓存中有两条数据:{zztest,上线...原创 2020-03-10 10:45:50 · 185 阅读 · 0 评论 -
回表和覆盖索引
什么是回表,举个例子,建一张表order。表字段有id,mcode,code,detail;id为主键,mcode字段加索引现在根据mcode查询所有的code(根据主单编号,查询所有的子单编号)语句:select code from order where mcode = ‘M001’;这时候数据库会怎么操作呢?因为mcode索引,所以查询mcode的索引,查到符合要求的数据的rowi...原创 2020-02-25 16:30:18 · 859 阅读 · 0 评论 -
数据库使用B+树而不使用B树的理由
首先:B+树和B树的区别就是,B+树非叶节点不存值,只存子节点的指针。而B树在非叶节点也是存值的每个节点的存储数据量固定,如果非叶节点要存数据值,那子节点的个数就会减少,树的高度就会增加,IO操作会变多,一般情况下,树的高度也就只有3。...原创 2019-10-31 16:14:05 · 536 阅读 · 0 评论 -
sql优化的方法191028
原地址:https://blog.csdn.net/jie_liang/article/details/773409051.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null ...原创 2019-10-28 17:07:43 · 101 阅读 · 0 评论 -
leetcode1225. 报告系统状态的连续日期(sql自定义变量)
https://leetcode-cn.com/problems/report-contiguous-dates/Table: Failed±-------------±--------+| Column Name | Type |±-------------±--------+| fail_date | date |±-------------±--------+...原创 2019-10-24 18:11:33 · 729 阅读 · 0 评论 -
索引-HASH索引和BTREE索引
HASH索引,顾名思义,是把数据按照hash值进行排序,所以会出现数据明明相近的两条数据确插入很远。所以在以下的查询中会不起效果:1、>=、<=、between、like 等时;2、order by操作而BTREE索引是建树,7778距离7776必定比7779距离7776更近。所以在使用>、<、>=、<=、BETWEEN、!=或者<>,或者 ...原创 2019-02-15 16:50:36 · 243 阅读 · 0 评论 -
索引-使用索引的原则
1、where查询条件后的加索引2、数据的基数大效果好,比如性别基数就2个,加了用处也不大3、尽量使用短索引,如果前10位就能进行删选,就不要删选20位,浪费IO4、注意最左前缀(多列索引时候,由左到右索引)5、不要过度索引,毕竟修改和插入的时间,费时间...原创 2019-02-15 16:42:27 · 983 阅读 · 0 评论