主从复制
摘要:MySQL 主从复制(Master-Slave Replication)是一种数据复制技术,用于在多个数据库服务器之间的数据同步。在主从复制架构中,一个服务器被设置为主服务器(Master),充当数据源,其他服务器被设置为从服务器(Slave),用来复制主服务器的数据。 MySQL 的主从复制工作过
阅读全文
posted @
2024-06-30 18:03
zhengbiyu
阅读(15)
推荐(0) 编辑
排序
摘要:“排序”这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数 sort_buffer_size。sort_buffer_size,就是 MySQL 为排序开辟的内存(sort_buffer)的大小。如果要排序的数据量小于 sort_buffer_size,排序就在内存中完
阅读全文
posted @
2024-06-24 22:19
zhengbiyu
阅读(8)
推荐(0) 编辑
索引的访问类型
摘要:创建表: CREATE TABLE single_table ( id INT NOT NULL AUTO_INCREMENT, key1 VARCHAR(100), key2 INT, key3 VARCHAR(100), key_part1 VARCHAR(100), key_part2 VAR
阅读全文
posted @
2024-02-26 22:24
zhengbiyu
阅读(8)
推荐(0) 编辑
脚本exlpain结果与optimizer_trace结果不一致
摘要:先说结论: 表数据量太少,使用索引的效率不如全表扫描。 表信息: CREATE TABLE `w_map_cell` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `shelf_id` bigint(11) DEFAULT NULL COM
阅读全文
posted @
2024-01-24 18:04
zhengbiyu
阅读(9)
推荐(0) 编辑
mysql的主键超过最大值会发生什么?
摘要:设置主键的情况下 在自增主键达到int64最大后,再次插入一行记录,报错如下: Duplicate entry ‘4294967295’ for key ‘increment_id_test.PRIMARY’ 唯一键冲突报错:当auto_incement达到上限后,再次申请下一个id时,得到的值保持
阅读全文
posted @
2023-04-09 21:01
zhengbiyu
阅读(411)
推荐(0) 编辑
事务隔离级别
摘要:事务的四个特征(ACID) 事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。 原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。
阅读全文
posted @
2023-04-06 21:31
zhengbiyu
阅读(10)
推荐(0) 编辑
binlog
摘要:mysql binlog的三种格式简单概括总结 三种格式:row、statement、mixed 区别:row格式文件比较大,statement比较小,row格式保存的是一行一行的数据,statement保存的是sql语句,mixed格式介于二者之间,statement容易丢数据,row格式则不会。
阅读全文
posted @
2023-04-06 21:30
zhengbiyu
阅读(8)
推荐(0) 编辑
Rcord Lock、Gap Lock、Next-key Lock(待补充)
摘要:查询mysql加锁情况 在MySQL中,可以通过SHOW ENGINE INNODB STATUS查看加锁情况。 需要通过下列配置才能从SHOW ENGINE INNODB STATUS 中看到锁的状态。 SET GLOBAL innodb_status_output=ON; SET GLOBAL
阅读全文
posted @
2023-04-06 16:43
zhengbiyu
阅读(9)
推荐(0) 编辑
LSMT(Log-Structured Merge-Tree)
摘要:LSM简介Log Structured Merge Tree,下面简称 LSM。2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。目前,LSM 被很多存储产品作为存储结构,比如 Apache HBase, Apache C
阅读全文
posted @
2023-03-29 16:39
zhengbiyu
阅读(992)
推荐(0) 编辑
change buffer
摘要:change buffer 是 buffer pool 里的一块区域。 change buffer 不缓存聚簇索引的更新,二级索引的page假如符合使用 change buffer 更新条件的话,就不去读磁盘,直接使用 change buffer 的 page,change buffer 的 pag
阅读全文
posted @
2023-03-27 00:25
zhengbiyu
阅读(106)
推荐(0) 编辑
索引失效场景
摘要:什么时没必要用索引 1) 数据唯一性差,区分度不高(一个字段的取值只有几种时)的字段不要使用索引 比如性别,只有两种可能数据。意味着索引的二叉树级别少,多是平级。这样的二叉树查找无异于全表扫描。 2) 频繁更新的字段不要使用索引 比如logincount登录次数,频繁变化导致索引也频繁变化,增大数据
阅读全文
posted @
2023-03-27 00:15
zhengbiyu
阅读(48)
推荐(0) 编辑
B Tree和B+Tree
摘要:索引结构(innodb) B Tree 每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为null,叶子结点不包含任何关键字信息 B+Tree 所有的叶子结点中包含了全部关键字的信息,非叶子节点只存储键值信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的
阅读全文
posted @
2023-03-26 23:47
zhengbiyu
阅读(17)
推荐(0) 编辑
undo log
摘要:事务回滚用,属于逻辑日志。 行记录隐藏列roll_pointer(7字节)会指向undolog,每条undolog中也有一个roll_pointer指向更早的undolog记录,在mvcc中会使用版本链来达到事务隔离的效果。 我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行
阅读全文
posted @
2023-03-26 23:39
zhengbiyu
阅读(80)
推荐(0) 编辑
redo log
摘要:在mysql中数据更新的流程是:1、执行器先从引擎中找到数据,如果在内存则直接返回,如果不在内存查询后返回。2、执行器拿到数据后,会先修改数据,然后记录undolog,调用引擎接口重新写入数据。3、引擎将数据更新到内存,同时写入redo log,此时处于prepare状态。4、执行器生成这个操作的b
阅读全文
posted @
2023-03-26 23:38
zhengbiyu
阅读(65)
推荐(0) 编辑
死锁
摘要:死锁的必要条件 多个并发事务(2个或者以上)。 每个事务都持有锁(或者是已经在等待锁)。 每个事务都需要再继续持有锁(为了完成事务逻辑,还必须更新更多的行)。 事务之间产生加锁的循环等待,形成死锁。 总结:当两个或多个事务相互持有对方需要的锁时,就会产生死锁。 死锁的检测(8.0版本增加) 当死锁检
阅读全文
posted @
2023-03-26 23:29
zhengbiyu
阅读(59)
推荐(0) 编辑
表新增字段如何减少影响业务影响
摘要:首先选择业务低峰期执行,如果24小时业务都频繁,有以下几种方式: 直接添加 如果该表读写不频繁,数据量较小(通常1G以内或百万以内),直接添加即可。 MySQL 5.6后自带OnlineDDL功能(MyISAM表无法使用,且不支持全文和空间索引),自身的OnlineDDL是inplace模式,当整个
阅读全文
posted @
2023-03-26 23:20
zhengbiyu
阅读(241)
推荐(0) 编辑
数据库表数据空洞处理
摘要:数据空洞 当对一条数据执行delete操作时,MySQL将数据删除后,并未将数据占用的空间返还给操作系统,而是将当前空间标记为"可复用",当有新的数据插入时,则不会重新申请空间,而是插入到"可复用"空间中,这种"可复用"空间,称之为数据空洞。 MySQL官方文档对此的解释如下: After dele
阅读全文
posted @
2023-03-26 23:14
zhengbiyu
阅读(188)
推荐(0) 编辑
一般怎么分析一个sql
摘要:explain语句进行分析。还需要进一步分析的话可以进行optimizer_trace,一共prepare、optimizer、execute阶段,主要关注optimizer阶段。 type 详见索引的访问类型。 key 实际使用的索引。 key_len 使用的索引的长度。可以分析联合索引用上了几个
阅读全文
posted @
2023-03-26 23:11
zhengbiyu
阅读(41)
推荐(0) 编辑
MVCC机制
摘要:行记录隐藏列trx_id(占用 6 个字节)。 RC隔离级别是在每次执行sql时生成read view,RR隔离级别是在事务开始后第一次执行sql生成read view。 ReadView中主要包含4个比较重要的内容: m_ids:表示在生成ReadView时当前系统中活跃的读写事务的事务id列表。
阅读全文
posted @
2023-03-26 23:09
zhengbiyu
阅读(41)
推荐(0) 编辑