- 博客(8)
- 收藏
- 关注
原创 一文讲清MySQL中的三大日志
不管是时刻 A(redo log 已经写入磁盘, bin log 还没写入磁盘),还是时刻 B (redo log 和 bin log 都已经写入磁盘,还没写入 commit 标识)崩溃,而bin log 文件保存的是全量的日志,保存了所有数据变更的情况,所以。这种方式性能最低,但是也最安全,因为只要事务提交成功,redo log 记录就一定在磁盘里,不会有任何数据丢失。,也意味着,事务期间的多次读取同一条数据,前后两次读的数据可能会出现不一致,因为可能这期间另外一个事务修改了该记录,并提交了事务。
2024-07-23 17:16:29
2050
原创 MySQL如何存放一行行数据以及NULL值存放在哪?
InnoDB提供了 4 种行格式存储数据,分别是 Redundant、Compact、Dynamic和 Compressed 行格式。
2024-06-23 15:46:36
413
原创 MySQL中的锁以及死锁问题
利用它的唯一性来保证订单表不会出现重复的订单,不过有一点不好的地方就是在我们插入一个已经存在的订单记录时就会抛出异常。:Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。,这样在备份数据库期间,不会因为数据的更新,而出现备份文件的数据与预期的不一样。,直到拥有间隙锁的那个事务提交为止(释放间隙锁的时刻),在此期间会生成一个。,表明有事务想在某个区间插入新记录,但是现在处于等待状态。:一个事务在插入一条记录的时候,需要判断插入位置。:锁定一个范围,但是不包含记录本身;
2024-06-22 18:40:29
1600
原创 关于MySQL单表不要超过 2000W 行问题
对于叶子节点,用户记录数据主要存放的是主键和真正的行数据,这个影响的因素就会多很多,比如,字段的类型,字段的数量。对于非叶子节点,用户记录数据主要存放的数据是主键和页号,主键我们假设是 Bigint (8 B), 而页号也是固定的(4 B), 那么索引页中的一条数据也就是 12B。假设 B+ 树是三层,那就是 z = 3, Total = (1280 ^2) *15 = 24576000 (约 2.45kw)B+树上非叶子节点存放索引,非叶子节点里的每条数据都指向新的页,真正一行行的数据存放在叶子节点。
2024-06-22 16:31:43
576
原创 Java中使用lambda表达式重写排序
在Java中使用lambda表达式重写排序方式时,方法内部使用的是集合框架中的Comparator接口或者Comparable接口的compareTo方法来比较元素,这就要求元素必须是对象,以便能调用方法。所以目标对象中存储的是需要是对象,而非基本数据类型的值。输出结果:[1, 2, 3, 5]
2024-06-01 17:05:12
191
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人