MySql高级 1.学习计划    数据结构在线演示http://www.cs.usfca.edu/~galles/visualization/Algorithms.html 3 视图 6 MySql体系结构 7 存储引擎特性 8 优化SQL步骤 9 索引数据结构 10MVVC 11 锁 12 Mysql读写分离

序号 基础 SQL优化 系统优化 实战
1 索引 体系结构 应用优化 MYSQL常用工具
2 视图 存储引擎 查询缓存优化 MYSQL日志
3 存储过程和函数 优化SQL步骤 内存管理优化 MYSQL主从复制 
4 触发器 索引使用&SQL优化 锁&常用技巧 案例

2.索引

2.1什么是索引  :索引是帮助mysql高效获取数据的数据结构

2.2 索引结构:

:常见索引类型

  • BTREE 索引 : 最常见的索引类型,大部分索引都支持 B 树索引。

  • HASH 索引:只有Memory引擎支持 , 使用场景简单 。

  • R-tree 索引(空间索引):空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少,不做特别介绍。

  • Full-text (全文索引) :全文索引也是MyISAM的一个特殊索引类型,主要用于全文索引,InnoDB从Mysql5.6版本开始支持全文索引

 2.2.1 BTree结构:多路平衡搜索树

 

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 (多叉平衡树)

二叉树和红黑树约束都是左小右大(父节点左侧小,父节点右侧大),缺点都是在自增主键时深度很深。