数据库索引

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 

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 内存不可完全缓存所有数据的时候,体现索引的重要性。 MySQL支持的索引,不同的存储引擎支持不同的类型 B-tre...
    Sara_d94e阅读 3,880评论 0 0
  • MySql数据库索引原理 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点。考虑...
    琴匣自鸣阅读 5,668评论 0 2
  • 1.Btree索引和Hash索引 MySQL支持的索引类型: B-tree索引的特点: B-tree索引以B+树的...
    Wangtwodog阅读 4,253评论 0 0
  • 【强制】业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。说明: 不要以为唯一索引影响了 ins...
    me0w阅读 7,247评论 0 65
  • 户外背包相xi信wang大家都是见过滴,而今天在这篇文章里亮相的背包,恐怕背包们见了都要叫“爸爸”呢 瑞典制造 M...
    矮狸科四阅读 5,108评论 0 1

友情链接更多精彩内容