zoukankan      html  css  js  c++  java
  • 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,可提高查询性能。
  • 相关阅读:
    {purple8}
    {purple7}
    {暴力}
    uva1103(dfs)
    {purple5练习题}
    c++复习题
    关于继承
    lrj紫书第五章
    20个Linux系统监视工具
    linux上配置jdk+Apache
  • 原文地址:https://www.cnblogs.com/nangonghui/p/11434109.html
Copyright © 2011-2022 走看看