数据库索引

作者: 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 

相关文章

  • 数据库索引记录

    本文用来记录数据库索引相关内容; 1】数据库索引分为单列索引,组合索引,全文索引,空间索引 2】单列索引:只有一个...

  • 索引,序列,视图

    1、数据库索引索引是数据库对象之一,用于加快数据的检索,类似于书籍的索引。在数据库中索引可以减少数据库程序查询结果...

  • Sql索引优化—转载

    数据库索引使用方式 使用索引是提高数据库查询效率的主要方式,下面从索引结构,索引类型,索引操作,命中索引几个方面来...

  • 数据库 - 索引

    索引 索引 索引的建立对于数据库的高效运行是很重要的。索引可以大大提高数据库的检索速度。 索引分单列索引,组合索引...

  • [Mysql]Mysql索引实现原理及相关优化策略

    数据库索引 数据库索引是什么? A database index is a data structure that...

  • 数据库索引定义和类型

    数据库索引类型及实现方式 1、索引定义 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。索引是对数据库表...

  • 数据库索引结构总结

    [TOC] 参考 数据库索引数据结构总结 本文摘抄自数据库索引数据结构总结 1. 摘要 数据库索引是数据库中最重要...

  • MySQL 索引

    MySQL 索引 数据库索引的原理:数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表...

  • 『数据库』索引的工作原理

    数据库索引能够提高数据库的查询效率,那么索引到底是什么。 什么是索引 索引本身这个名字已经能回答这个问题了,索引就...

  • PostgreSQL基础知识--索引

    索引是增强数据库性能的常用方法。索引使得数据库在查找和检索数据库的特定行的时候比没有索引快得多。但索引页增加了整个...

网友评论

    本文标题:数据库索引

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