数据库索引

作者: huxt | 来源:发表于2019-07-18 18:06 被阅读0次

    1.B-tree索引

    1.1)B-tree 索引的特点

    1.B-tree 索引能够加快数据的查询速度

    2.B-tree 索引更适合进行范围查找

    1.2)在什么情况下可以用到B 树索引

    1.全值匹配的查询

    order_sn='9876432119900'

    2.匹配最左前缀的查询

    3.匹配列前缀査询

    order_sn like‘9876%

    4.匹配范围值的查询

    order sn>9876432119900

    and order sn<9876432119999

    5.精确匹配左前列并范围匹配另外一列

    6.只访问索引的查询

    1.3) Btree 索引的使用限制

    1.如果不是按照索引最左列开始査找,则无法使用索引

    2.使用索引时不能跳过索引中的列

    3.Not in和<>操作无法使用索引

    4.如果查询中有某个列的范围查询,则其右边所有列都无法使用索引

    2.Hash 索引

    1.Hash 索引是基于 Hash 表实现的,只有查询条件精确匹配Hash 索引中的所有列时,才能够使用到 hash 索引。

    2.对于 Hash 索引中的所有列,存储引擎都会为每一行计算一个HaSh码,Hash 索引中存储的就是 HaSh码。

    1.1) Hash 索引的限制

    1.Hash 索引必须进行二次查找

    2.Hash 索引无法用于排序

    3.Hash 索引不支持部分索引査找也不支持范围査找

    4.Hash 索引中 Hash 码的计算可能存在 Hash 冲突

    1.2)为什么要使用索引

    1.索引大大减少了存储引擎需要扫描的数据量

    2.索引可以帮助我们进行排序以避兔使用临时表

    3.索引可以把随机 I/O 变为顺序 I/O

    3.优化索引策略

    1. 2. 3. 4. 5.

    查看未被使用的索引:

    SELECT object_schema, object_name, index_name, b.TABLE_ROWS FROM performance_schema.table_io_waits_summary_by_index_usage a join information_schema.tables b oN a.OBJECT_SCHEMA=b.TABLE_SCHEMA AND a.OBJECT_NAME=b.TABLE_NAME WHERE index_name IS NOT NUlL ANd count_star =0 ORDER BY object_schema, object_name;

    更新索引统计信息及减少索引碎片

    analyze table table_name

    optimize tabletable_name

    使用不当会导致锁表

    4.工具安装

    安装步骤1 :https://blog.csdn.net/laiyijian/article/details/71526923

    下载地址:https://www.percona.com/downloads/percona-toolkit/

    cd /opt

    wget https://www.percona.com/downloads/percona-toolkit/3.0.2/binary/tarball/percona-toolkit-3.0.2_x86_64.tar.gz

    tar -zxvf percona-toolkit-3.0.2_x86_64.tar.gz

    cd percona-toolkit-3.0.2

    perl Makefile.PL

    如果报:BEGIN failed--compilation aborted at Makefile.PL line 1,需要安装perl-devel

    yum install perl-devel

    安装后再执行perl Makefile.PL可能会报找不到DBI,DBD-MySQL,IO-Socket-SSL.noarch,perl-Time-HiRes

    用下边的方法在线安装:

    yum install perl-DBI

    yum install perl-DBD-MySQL

    yum install perl-IO-Socket-SSL.noarch

    yum install perl-Time-HiRes

    然后:

    make

    make install

    安装步骤2:https://blog.csdn.net/qq_34556414/article/details/78185057

    一.检查和安装与Perl相关的模块

        PT工具是使用Perl语言编写和执行的,所以需要系统中有Perl环境。

        依赖包检查命令为:

    rpm -qa perl-DBI perl-DBD-MySQL perl-Time-HiRes perl-IO-Socket-SSL

    如果有依赖包确实,可以使用下面的命令安装:

    yum install perl-DBI

    yum install perl-DBD-MySQL

    yum install perl-Time-HiRes

    yum install perl-IO-Socket-SSL

    二.下载和安装percona toolkit的包

    1、下载和安装percona toolkit的包

    参照:https://www.percona.com/doc/percona-toolkit/3.0/installation.html#installing-percona-toolkit-on-red-hat-or-centos

    yuminstallhttp://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

    2、查看可以安装的包

    yumlist |greppercona-toolkit

    3、安装percona-toolkit工具包

    yuminstallpercona-toolkit

    4、出现complete!即表示安装成功:

    5、安装后,可以通过下面的命令确认是否安装成功:

    # pt-query-digest --help

    # pt-table-checksum --help

    安装步骤3:https://www.cnblogs.com/zping/p/5678652.html

    教程:https://blog.csdn.net/cigang/article/details/84882155

    使用pt-mysql-summary脚本查看mysql的详细信息

    [root@tong1 bin]# pt-mysql-summary --user root --password system --socket /tmp/mysql.sock

    使用pt-diskstats脚本查看数据库对磁盘的信息

    [root@tong1 bin]# ./pt-diskstats 

    相关文章

      网友评论

        本文标题:数据库索引

        本文链接:https://www.haomeiwen.com/subject/bftrlctx.html