MySql高级
1.学习计划 数据结构在线演示http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
序号 | 基础 | SQL优化 | 系统优化 | 实战 |
1 | 索引 | 体系结构 | 应用优化 | MYSQL常用工具 |
2 | 视图 | 存储引擎 | 查询缓存优化 | MYSQL日志 |
3 | 存储过程和函数 | 优化SQL步骤 | 内存管理优化 | MYSQL主从复制 |
4 | 触发器 | 索引使用&SQL优化 | 锁&常用技巧 | 案例 |
2.索引
2.1什么是索引 :索引是帮助mysql高效获取数据的数据结构
2.2 索引结构:
:常见索引类型
-
-
HASH 索引:只有Memory引擎支持 , 使用场景简单 。
-
R-tree 索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少,不做特别介绍。
-
2.3 索引设计原则
- 对查询频次较高,且数据量比较大的表建立索引。
- 查询字段建立索引
- 尽量使用唯一索引
- 索引也需要维护,不是越多越好
- 使用段紫椴索引
3 视图
它是一种虚拟表,就是一条select语句执行返回的结果集。
创建视图
create or replace view city_country_view as select t.*,c.country_name from country c , city t where c.country_id = t.country_id;
4存储过程
5触发器
6 MySql体系结构
- Connection Pool:连接池
- 管理服务(集群、安全。。。)、数据库对象、解析器、优化、操作缓存层
- 插件式存储引擎(非常多的存储引擎)
- 文件系统(数据、索引信息、二进制信息、查询日志等在磁盘中)
6.2 数据库在磁盘存储结构
Myisam
- xxx.frm 表结构文件
- xxx.myd 表数据
- xxx.myi 索引数据文件
Innodb
- xxx.frm 表结构文件
- xxx.ibd 数据+索引 文件
7 存储引擎特性
存储引擎是针对于表
8 优化SQL步骤
9 索引数据结构
- 聚集索引:叶子节点包含所有数据字段
- 非聚集索引:叶子节点索引和数据分开
二叉树 红黑树(二叉平衡树) btree (多叉平衡树)
联合索引,多列索引
10MVVC
- 版本链
11 锁
- 读锁:共享锁、Shared Locks、S锁
- 写锁:排他锁、Exclusive Locks、X锁
- select:不加锁
12 Mysql读写分离
磁盘存取原理
用户进程->内核->驱动硬件程序->读取到内核空间->用户空间
磁盘:寻道->旋转->预读(计算机预读一页大小是4K,因为可指定页数所以实际可以是4K*N);
Innodb一页默认是计算机的4页即4k*4页(16K)
二叉树 红黑树(二叉平衡树) btree (多叉平衡树)
二叉树和红黑树约束都是左小右大(父节点左侧小,父节点右侧大),缺点都是在自增主键时深度很深。