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
网友评论