自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 ❌Long 包装类默认值问题,swagger 默认为 0???导致 mybatisplus 分页插件查不到数据

id 使用的包装类 Long 类型,正确的默认参数应该是 null,但是 swagger 默认参数为 0,然后一直查询不到数据,因为使用的是 mybatis-plus 的分页插件,就只传入了两个参数 current 和 pageSize,但是 mp 的分页插件会自动拼接 SQL,因为没有在控制台打印 SQL,所以就不知道哪里出了问题?我 debug 依旧没有报错,但是就是查不到数据,我就感觉可能是查询参数的问题,因为我的 表字段 id 是分布式 id,所以我就把一条数据的 id 传进去,就查到了一条数据。

2024-12-16 20:01:00 216

原创 MySQL关于索引的面试题

以上联合索引会失效,(a,b,c)联合索引,是先按 a 排序,在 a 相同的情况再按 b 排序,在 b 相同的情况下再按 c 排序。联合索引(a,b,c)where c=1, 这个不能走联合索引,但是 c 是有索引的虽然无序,但是比全局扫描是要效率高,所以我们还是使用索引过滤,这个操作就叫索引下推。聚簇索引即主键索引,如果没有主键 id,找唯一字段, MySQL 会默认隐藏生成一个主键索引,索引结构和数据一起放。6.主键索引,索引只挂索引,联合索引,索引挂主键+联合索引字段;使用联合索引,不遵循【

2024-10-15 15:35:56 1009

原创 一篇文章了解MySQL的锁

全局锁就是对整个数据库的实例加锁,加锁后整个实例就处于只读状态,后续的 DML和 DDL 语句和已经更新操作的事务提交语句都将被阻塞。

2024-10-13 17:16:38 913

原创 一篇文章让你理解MySQL引擎

InnoDB:数据文件和索引文件结合在一起,使用聚簇索引和非聚簇索引,支持事务、行锁和MVCC,适合需要高并发写入和事务支持的应用场景。MyISAM:数据文件和索引文件分离,索引文件仅保存数据记录的地址,支持非聚簇索引,不支持事务和行锁,适合读多写少、不需要事务支持的应用场景。

2024-10-12 15:21:31 1139

原创 MySQL的事务,详细讲解脏读和幻读问题

最后,一旦事务提交,转账的结果就是永久性的,体现了事务的持久性。,因为当执行 select ... for update 语句的时候,会加上 next-key lock,如果有其他事务在 next-key lock 锁范围内插入了一条记录,那么这个插入语句就会被阻塞,无法成功插入,所以就很好了避免幻读问题。,因为可重复读隔离级别下,事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,即使中途有其他事务插入了一条数据,是查询不出来这条数据的,所以就很好了避免幻读问题。,不用加锁,性能更高。

2024-10-11 11:36:08 952

原创 2024了还有人不知道MySQL的高可用三大架构???

什么是高可用?高可用:高可用是系统所能提供无故障服务的一种能力。一般来说,系统至少要达到 4 个 9999,否则用户体验会非常差。4 个 9 对于生产环境影响还比较大,5 个 9 的要求又太高,于是一些云服务厂商提出来 99.995%高可用是系统所能提供无故障服务的一种能力,度量单位是几个 9;线上系统高可用目标应不低于 99.995%,否则系统频繁宕机,用户体验不好;高可用实现基础是:冗余 + 故障转移;无状态服务的高可用设计较为简单,直接故障转移或剔除就行;

2024-10-05 10:25:52 2711

原创 MySQL数据库日志之WAL机制和Buffer Pool

MySQL 的数据都是存在磁盘中的,那么要更新一条记录的时候,得先要从磁盘读取该记录,然后在内存中修改这条记录。,如果是更新操作,需要把被更新的列的 旧值记下来,也就是要生成一条 undo log,undo log 会写入 Buffer Pool 中的 undo 页面。InnoDB 会为 Buffer 申请一片连续的内存空间,然后按照默认 16 KB 的大小划分一个个页,Buffer Pool 中的页就叫缓存页。当然是缓存,这样下次有查询语句命中了这条记录,直接读取缓存中的记录,就不需要从磁盘获取数据了。

2024-09-21 10:20:11 1219

原创 MySQL数据库日志之为什么需要undolog?+MVCC

redo log 会每秒刷盘,提交事务时也会刷盘,数据页和 undo 页都是靠这个机制保证持久化。如果满足可见行,就会顺着 undo log 版本链里找到满足其可见性的记录,从而控制并发事务访问同一记录的行为---就叫 MVCC(多版本并发控制)】undo log 版本链是指一行数据被多个事务修改后,MySQL 会保留修改前的数据到 undo log ( 回滚日志),并用。每当 InnoDB 引擎对一条记录进行操作(修改、删除、新增)时,都会把要回滚时需要的信息都记录到 undo log 里。

2024-09-19 14:33:44 948

原创 MySQL数据库之日志redolog和Binlog区别和两阶段提交问题

bing log 从库只读不写,主库主要写,bin log 写发生异常,那么 binlog 就没有数据,进行数据恢复的时候,主库从 redo log 恢复,从库从 binlog 恢复,就会导致主库和从库数据不一致。binlog log 文件保存的是全量的日志,也就是保存了所有的数据变更情况,理论上只要记录在 binlog 上的数据,都可以恢复,如果不小心整个数据库的数据被删除,就用 binlog 文件恢复。不能用 redo log 文件恢复,只能用 binlog 文件恢复。方案来解决主从不一致问题!

2024-09-17 20:12:27 1147

原创 MySQL数据库日志之为什么需要redo log?

为 0 时,如果 MySQL 挂了,或者宕机了,可能会丢失 1 秒数据,因为不主动刷盘,靠后台系统线程 1 秒轮询刷盘,或者 redo log buffer size 容量到一半,线程刷盘。事务提交就会主动刷盘,如果事务执行期间 MySQL 挂了或者宕机了,日志丢了,但是事务没有提交,所以日志丢了没损失。首先,数据页的大小是 16KB,刷盘比较耗时,可能就修改数据页里的几 Byte,那就没有必要把完整的的数据页刷盘。所以,0 和 2,都是后台线程刷盘,那么一旦异常,可能都会损失 1 秒的数据。

2024-09-16 08:27:40 1359 1

原创 MySQL日志之为什么需要binlog?

它记录了数据库运行状态的各种信息,包括错误信息、查询信息、事务信息等等,是进行异常排查、性能优化、数据恢复和备份的关键基础。

2024-09-15 19:00:00 2139 1

原创 MySQL高可用之分库分表

当表 的数据量大到一定程度时, 分区也不太好解决问题,此时就要拆分表结构,把一张表拆分成多张表,查询的时候根据拆分表的方式去相应的表中查询数据。,因为在单表中我们可以用数据库主键做唯一 ID ,但是如果做了分库分表,多张单表中的自增主键就会发生冲突。但是不管什么算法,都要保证一个前提,那就是同一个分表字段,经过这个算法处理后,得到的结果一定是一致的,不可变的。一致性哈希可以将常用的 hash 算法来将对应的可以哈希到一个具有 2 的 32 次方个节点的空间中,那么这里的用户,时间,地区就是分表字段。

2024-09-15 12:25:59 1270 1

原创 MySQL高可用之读写分离笔记

所以在这种场景下,缓存只能作为数据库的前置保护机制,但是还会有很多流量打到数据库上,并且随着用户订单不断增多,请求到 MySQL 上的读写流量会越来越多,当单台 MySQL 支撑不了大量的并发请求时,该怎么办?MySQL 做读写分离的前提,是吧把 MySQL 集群拆分成“主+ 从”机构的数据集群,这样才能实现程序上的读写分离,并且 MySQL 集群的主库、和从库的数据是通过。然而在“订单中心”这样的场景中,每个用户的订单都不同,除非全量缓存数据库订单信息(又会带来架构的复杂度),不然缓存的命中率依旧很低。

2024-09-14 11:54:24 2283 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除