Niimp
1.mysql锁
-
全局锁
-
对整个数据库实例
-
用于数据备份
-
commit前禁止DML、DDL,允许DQL
-
flush tables with read lock; #加全局锁 mysqldump -h(ip) -uroot -p(password) (databaseName) >(name).sql #备份命令 windows的dos执行即可 unlock tables; #解锁
-
-
表级锁
-
表锁
-
表共享读锁(read lock)
- 本连接以及其他连接都允许DQL,禁止DML、DDL
-
表独占写锁(write lock)
-
本连接允许DQL、DDL、DML,其他连接都不允许
-
#加锁 lock tables tableName.. read/write #释放锁 unlock tables
-
-
-
元数据锁(MDL)–系统自动控制
-
为避免DML与DDL冲突,保证读写正确性
-
-
意向锁
-
避免DML使用的时候行锁与表锁冲突–>减少表锁的扫描次数(对行锁)–>直接找意向锁即可
-
意向共享锁(IS)
由sql语句: select ...lock in share mode 添加 *与表共享锁(read)兼容、表排他锁(write)互斥
-
意向排他锁(IX)
由sql语句: insert update delete select...for update添加 *与表共享锁(read)、表排他锁(write)都互斥、意向排他锁之间不会互斥 select object schema,object_name,index_name,lock type,lock_mode,lock data from performance_schema.data_locks
-
-
-
-
行级锁
-
-
行锁
- 共享锁(S)
- 排他锁(X)
-
间隙锁
- 间隙加锁不包括两端
-
临键锁
- 两端加间隙加锁
-
-
2.InnoDB引擎
1.逻辑存储结构
2.内存结构与磁盘结构
1.内存结构
1.缓冲池
2.更改缓冲区
3.自适应Hash
4.日志缓冲区
2.磁盘结构
1.系统表空间、独立表空间
2通用表空间、撤销表空间、临时表空间
3.双写缓冲区、重做日志
3.后台线程
4.事务原理
1.事务回顾
2.事务解决方案
1.redo log
2.undo log
3.当前读、快照读、MVCC
4.MVCC实现原理
1.隐藏字段
#ibd2sdi是一个用于从InnoDB表空间文件中提取序列化字典信息(SDI)的实用程序,导出格式为JSON。所有的InnoDB表空间文件都存在SDI数据。
ibd2sdi name.ibd
2.undo log版本链
1.undo log
2.版本链
3.readview
1.RC级别下,进行快照读,版本提取的底层原理
2.RR级别下,进行快照读,版本提取的底层原理
4.总结
3.MySQL管理
1.系统数据库
2.常用工具
1.mysql
2.mysqladmin
3.mysqlbinlog
4.mysqlshow
5.mysqldump
6.mysqlimport
4.MySQL日志
1.错误日志
2.二进制日志
1.概述
2.日志格式
3.日志查看
4.日志删除
3.查询日志
4.慢查询日志
5.主从复制
1.概述
2.主从复制原理
3.配置
1.主库配置
1.服务器准备
2.修改配置文件
3.创建远程连接账号,并授权
2.从库配置
1.修改配置文件
2.登录mysql进行主库连接配置
3.开启同步操作
4.总结
101153)]
2.登录mysql进行主库连接配置
[外链图片转存中…(img-bnCZSv10-1695455101154)]
3.开启同步操作
[外链图片转存中…(img-CbSpzcIZ-1695455101155)]