那时不了解索引 , 一条简单的“根据用户名搜索全部回答的sql“需要执行半分钟左右 , 完全满足不了正常的使用 。
案例二:近线上应用的数据库频频出现多条慢sql风险提示,而工作以来,对数据库优化方面所知甚少 。
例如一个用户数据页面需要执行很多次数据库查询 , 性能很慢,通过增加超时时间勉强可以访问,但是性能上需要优化 。
索引的优点合适的索引,可以大大减小mysql服务器扫描的数据量,避免内存排序和临时表,提高应用程序的查询性能 。
索引的类型mysql数据中有多种索引类型,primarykey,unique,normal,但底层存储的数据结构都是BTREE;有些存储引擎还提供hash索引,全文索引 。
BTREE是常见的优化要面对的索引结构,都是基于BTREE的讨论 。
B-TREE查询数据简单暴力的方式是遍历所有记录;如果数据不重复,就可以通过组织成一颗排序二叉树,通过二分查找算法来查询,大大提高查询性能 。
而BTREE是一种更强大的排序树 , 支持多个分支 , 高度更低,数据的插入、删除、更新更快 。
现代数据库的索引文件和文件系统的文件块都被组织成BTREE 。
btree的每个节点都包含有key,data和只想子节点指针 。
btree有度的概念d=1 。
假设btree的度为d,则每个内部节点可以有n=[d+1 , 2d+1)个key,n+1个子节点指针 。
树的大高度为h=Logb[(N+1)/2] 。
索引和文件系统中,B-TREE的节点常设计成接近一个内存页大小(也是磁盘扇区大小) , 且树的度非常大 。
这样磁盘I/O的次数,就等于树的高度h 。
假设b=100,一百万个节点的树 , h将只有3层 。
即,只有3次磁盘I/O就可以查找完毕,性能非常高 。
索引查询建立索引后 , 合适的查询语句才能大发挥索引的优势 。
另外,由于查询优化器可以解析客户端的sql语句,会调整sql的查询语句的条件顺序去匹配合适的索引 。
关于mysql怎么优化数据库和mysql 数据优化的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。
推荐阅读
- 电脑端看虎牙直播的网址,虎牙直播电脑版怎么看视频
- 苹果ios12网络运行商设置,苹果网络运营商设置
- for循环给数组赋值python,使用for循环输出数组中的数
- thinkphpincludephp文件,thinkphp 入口文件
- 按时间排序java源代码 java date排序
- 地平线3服务器,地平线3服务器目前无法使用,请稍后再试
- 丧尸片角色扮演游戏,角色扮演丧尸手游
- linux怎么用命令编辑 linux命令行编辑
- postgresql函数参数数组,post请求参数数组