跳过正文
  1. 技术文档/
  2. MySQL/

高级

概述 # 并发事务访问 # 并发事务访问的情况 # 读 - 读 # 并发读,不需要锁

索引

两种存储引擎下索引的对比 # 索引的代价消耗 #

备份与恢复

逻辑备份 # mysqldump 物理备份 # 拷贝数据目录下指定数据库的指导表

事务

https://relph1119.github.io/mysql-learning-notes/#/mysql/19-%E4%BB%8E%E7%8C%AB%E7%88%B7%E8%A2%AB%E6%9D%80%E8%AF%B4%E8%B5%B7-%E4%BA%8B%E5%8A%A1%E7%AE%80%E4%BB%8B 事务的隔离级别 # 权衡事务隔离性和一致性 事务的隔离性是由锁来保证的 数据并发问题 # 注意:指的是在事务并发执行过程中,事务之间互相干扰发生的现象,强调的是在事务范围内导致的不一致性问题

主从复制

作用 # 可以提高数据库的吞吐量 读写分离

临时记录 SQL

# show engines; alter table tb_user_pp engine = myisam; explain select name from tb_user where age > 17 ; # create index idx_user_age on tb_user_pp (age); # 查看表的所有索引 show indexes in tb_user_pp; # Collation(排序规则) 表示数据在索引中的排序方式,A 表示升序,D 表示降序 # Cardinality(基数) 表示索引中唯一值的估计数量(非真实的唯一值数量) # Index_type 索引类型,MySQL 中的索引类型大多是 BTTREE(二叉树) analyze table tb_user; select @@profiling; SELECT @@optimizer_switch; show processlist; SHOW VARIABLES LIKE 'datadir'; -- 自适应 hash 索引开关 SHOW VARIABLES LIKE '%adaptive_hash_index'; SHOW VARIABLES LIKE '%innodb_page_size'; SHOW VARIABLES LIKE '%innodb_file_per_table'; SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit'; SHOW VARIABLES LIKE 'innodb_log_group_home_dir'; SHOW VARIABLES LIKE 'innodb_log_files_in_group'; SHOW VARIABLES LIKE 'innodb_log_file_size'; SHOW VARIABLES LIKE 'innodb_undo%'; SHOW VARIABLES LIKE 'innodb_undo_directory'; SHOW VARIABLES LIKE 'innodb_undo_tablespaces'; SHOW VARIABLES LIKE 'innodb_row_lock%'; show open tables; select @@innodb_default_row_format; show table status like 'demo'; select @@completion_type; CREATE TABLE `t_user` ( `id` int(11) NOT NULL, `name` VARCHAR(20) DEFAULT NULL, `phone` VARCHAR(20) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB DEFAULT CHARACTER SET = ascii ROW_FORMAT = COMPACT; -- 事务 begin; select * from user where id = 5 for share ; commit; -- 8.0 Select * from information_schema.innodb_trx; Select * from performance_schema.data_locks; -- 表锁 lock tables demo.user read; lock tables demo.user write ; unlock tables; -- 日志 show variables like '%general%'; set global general_log = OFF; show variables like 'log_err%'; show variables like 'log_bin%'; show binary logs; show binlog events in "/var/lib/mysql/binlog.000016"; SHOW VARIABLES LIKE 'binlog_format';

MVVC

简介 # 用于实现高并发和一致性读取的重要机制,特别是实现可重复读(REPEATABLE READ)和读已提交(READ COMMITTED)隔离级别,而无需使用锁。 只有 innoDB 存储引擎才支持 MVCC = 隐藏字段(保证并发控制) + Undo Log(保证多版本)+ ReadView(保证并发控制) 快照读、当前读 # 快照读 # 当一个事务开始时,它会记录当前系统中活动事务的 ID,并将其作为一个快照。此后,所有的读取操作都会基于这个快照,从而确保读取到的数据是一致的,不会受到其他事务的影响。