一篇文章看懂MySQL数据库(中)
存储引擎补充索引是在存储引擎层实现的不同的存储引擎它的索引结构是不同的索引索引概述索引结构索引的分类索引语法SQL性能分析需要重点关注的字段typepossible_keyskeykey_lenExtra索引使用验证索引效率最左前缀法则索引失效情况规避范围查询索引失效尽量使用或者SQL提示覆盖索引回表查询注联合索引属于二级索引叶子节点下面挂的就是对应的主键值前缀索引单列联合索引注创建联合索引的时候要考虑顺序因为最左前缀法则设计原则小结SQL优化插入数据主键优化order by优化创建索引时没有指定排序默认为升序ascgroup by优化limit优化count优化updata优化注释就是使用update语句时候where后面的字段需要有索引此时执行该语句才是行级锁否则是表锁会大大降低数据库的并发访问性能。小结视图存储过程触发器视图基本语法视图是一张虚拟存在的表我们可以像操作表一样去操作视图检查选项cascaded--如图可知v3视图依赖v2视图v2视图依赖v1视图。创建v3时候没有加with cascaded check option所以进行插更删时不会检查v3创建语句的where条件而会递归去检查v2的创建条件v2创建语句中存在with cascaded check option所以会对其where条件进行检查并且携带检查v1的创建语句中的where条件尽管v1创建语句没有with cascaded check option但是使用cascaded相当于给其所依赖的视图的创建语句加了with cascaded check option。local--区别于cascaded如果在有with local check option的视图创建语句往上递归检查其所依赖的视图的创建语句中不存在with local check option则插更删则不会考虑其的where条件不会像cascaded检查语句那样给其所依赖的视图的创建语句加检查选项更新及作用存储过程介绍基本语法变量系统变量用户自定义变量局部变量create procedure p2begindeclare stu_count int default 0;select count(*) into stu_count from student;select stu_count;end;call p2();if判断参数case循环whilerepeatloop游标cursor条件处理程序handlereg.declare exit handler for not found(sqlstate 02000) close u_cursor存储函数用得较少存储函数能做的事存储过程也能做触发器介绍insert类型updata类型delete类型小结锁概述全局锁介绍一致性数据备份表级锁表锁--读锁会锁住本客户端的写阻塞其他客户端的写不锁本客户端的读和不阻塞其他客户端的读。--写锁会阻塞其他客户端的读和写但是不锁住本客户端的读和写。元数据锁意向锁主要解决的是在innodb引擎中加的行锁和表锁的冲突问题行级锁介绍行锁--升级为了表锁则其它客户端不能对其表的本行及其他行的数据进行操作。间隙锁临键锁注释2向右遍历到最后一个不满足查询需求时停止给这行数据与最后一个满足查询条件的行数据之间加上间隙锁再给这几个满足查询条件的行数据加上行锁以及第一个满足查询条件行数据本身加锁外他与左边的数据之间的间隙也要加锁注释3把范围查询到的第一个行数据以及后面满足条件的行数据和间隙都加上锁和间隙锁InnoDB引擎逻辑存储结构架构内存结构磁盘结构后台线程用于将内存结构数据刷新到磁盘所用到的后台线程事务原理概述redologundologMVCC基本概念隐藏字段undolog版本链readview通过这四个属性来决定当前这次快照读读的是哪个历史版本原理分析read committed隔离级别repeated read隔离级别小结MySQL管理系统数据库常用工具--注释使用-T输出选项后面要 /输出的位置目录txt文件会存放在mysql信任的目录下通过show variables like %secure_file_priv%查看mysql信任的目录——/var/lib/mysql-files/再执行mysqldump -uroot -pXXXX -T /var/lib/mysql-files/ db01 score就能看到两个文件一个txt文件和一个sql文件。--导入txt文件举例mysqlimport -uroot -pXXXX db01操作的数据库名称/var/lib/mysql-files/score.txt文件名小结