mysql性能优化

1、索引的实现

 

2、mysql体系结构

连接池、

服务和工具层、

sqlInterface、

parser、

optimizer、

caches

indexes:

pluggable storage engines 存储引擎:MyISAM InnoDB federated archive merge memory cluster example

file system   

logs and files binary  ,redo ,undo 

3、索引的定义

为了加速对表中数据的检索而创建的一种分散存储的数据结构。

索引  ——   表数据(磁盘地址      数据)

4、使用索引的好处

索引能极大的减少存储引擎需要扫描的数据量;

可以将随机IO编程顺序IO

索引可以在我们进行分组、排序等操作时,避免使用临时表

5、mysql支持的索引

一、数据结构

1、B+树索引(O(log(n)))

2、hash索引

a、仅仅能满足"=","IN"和"<=>"查询,不能使用范围查询

b、其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引

c 只有Memory存储引擎显示支持hash索引

3、FULLTEXT索引(现在MyISAM和InnoDB引擎都支持了)

4、R-Tree索引(用于对GIS数据类型创建SPATIAL索引)

5、数据结构为什么使用B+Tree?

  1. 树的概览
    1、二叉树查找 Binary Tree Search
    2、平衡二叉树 Balanced binary search tree
    相对平衡的树
    缺点:·太深 了:数据处的深度决定了索引的IO操作,IO操作耗时大
          太小了:每一个磁盘块(节点/页)保存的数据量太小了,没有很好 的利用操作磁盘IO的数据交换特性,也没有很利用好磁盘IO的预读能力(空间局部性原理),从而带来频繁的IO操作
    3、多路平衡二叉树B-tree   绝对平衡树
    4、加强版多路平衡查找树- B+Tree   mysql的B+Tree

 6、MySql B+Tree索引体现形式

  1、Myisam    db.myi(索引库)     db.myd(数据库)

  2、Innodb  以主键为索引来组织数据的存储

    聚集索引:数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同    db.ibd

    分为:主键索引 ,  辅助索引

  Myisam和Innodb索引查找对比

7、索引特性

a、离散型:离散型越高,选择性就越好

b、最左匹配原则:对索引中关键字进行计算(对比),一定是从左往右依次进行,且不可跳过

c、联合索引:

  单列索引   节点中关键词【name】

  联合索引   节点中关键词 【name,phoneNum】

  单列索引是特殊的联合索引

  联合索引列选择原则

  1、经常用的列优先【最左匹配原则】

  2、选择性(离散度)高的列优先【离散度高原则】

  3、宽度小的列优先【最少空间原则】

d、覆盖索引

  如果查询列可通过索引节点中的关键字直接返回,则该索引称之为覆盖索引。

  覆盖索引可减少数据库IO,将随机IO变为顺序IO,可提高查询性能。
posted @ 2019-08-30 16:00  南宫煌_慧  阅读(156)  评论(0编辑  收藏  举报