摘要:
在MySQL中当对一行数据进行更新时,通常都要加行锁,直到事务提交或回滚时才释放。同一时段内,对于同一个数据行,只有一个事务能够进行更新,其它事务需要等待。 在电商平台业务中,限购、秒杀是常用的促销手段。在这些场景下,大量对热点行的更新请求在极短时间间隔内到达后台数据库系统,必然造成严重的行锁竞争和 阅读全文
摘要:
LSM 树的设计思想很有意思。 LSM 树将对磁盘的随机写入转化为了磁盘友好型的顺序写(无论机械磁盘还是 SSD,随机读写都要远远慢于顺序读写),从而大大提高了写性能。 1、怎么转化顺序写? 核心就是在内存中维护一个有序的内存表(memtable),当内存表大于阈值的时候批量刷入磁盘,生成最新的 S 阅读全文
摘要:
一、存储文件 1、存放位置 MySQL数据库会在data目录下,以数据库为名,为每一个数据库建立文件夹,用来存储数据库中的表文件数据。 不同的数据库引擎,每个表的扩展名也不一样 ,例如: MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”等。 2、FRM表结构信息文件 无论是哪种存储引 阅读全文
摘要:
redo log 是 innodb生成的日志,主要为了保证数据的可靠性;bin log 是 MySQL server层面上生成的日志,主要用于 point in time 恢复和主从复制。undo log 主要用于事务的回滚和一致性快照读(MVCC 多版本并发控制)。 两者区别 MySQL中的red 阅读全文