IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 维护索引和表 -> 正文阅读

[大数据]维护索引和表

5.4.1 支持多种过滤条件

  • 看看那列拥有很多不同的取值(索引有更好的选择性),哪些列在where子句中出现得最频繁。

    为了满足最左匹配,可以使用

and sex in ('m','w')

? 来让mysql选择该索引(注意只有很少的列才可以这么使用

  • 尽可能将需要做范围查询的列放到索引的后面,以便优化器能使用尽可能多的索引列

5.4.2 避免多个范围条件

对于范围条件查询,mysql无法再使用范围列后面的其它索引列了。

5.4.3 优化排序

对于limit而言,随着偏移量的增加,mysql需要花费 大量的时间来扫描需要丢弃的数据。

优化这类索引一个比较好的策略是使用延迟关联。通过使用覆盖索引查询需要返回的主键,再根据这些主键关联原来的表获取需要的行。

EXPLAIN  SELECT id from account
# 解释
type index
key  primary
using index

没有where 条件,select 只有主键。使用的是主键索引查询的。

5.5 维护索引和表

找到并修复损坏的表,维护准确的索引统计信息,减少碎片

5.5.1 找到并修复损坏的表

一些不应该发生的错误,可以尝试check table 来检查表是否有损坏。可以使用 repair table 命令来修复损坏的表

5.5.2 更新索引统计信息

mysql 的查询优化器通过两个api来了解存储引擎的索引的分布信息,以决定如何使用索引

  1. records_in_range(),通过向存储引擎传入两个边界值获取这个范围内大概多少条记录,对于myisam 是精确值,innodb是估算值
  2. info(),该接口返回各种类型的数据,包括索引的基数(每个键值有多少条数据)

如果存储引擎向优化器提供的扫描行数信息是不准确的数据,或者执行计划本身太复杂以致无法准确地获取各个阶段匹配的行数,那么优化器会使用索引统计信息来估算扫描行数。

5.5.3 减少索引和数据的碎片

B-Tree 索引可能会碎片化,这会降低查询的效率。碎片化的索引可能会很差或者无序的方式存储在磁盘上。

行碎片:

? 是数据行被存储为多个地方的多个字段中。即使从索引中访问一条记录,行碎片也会导致性能下降

行间碎片:

? 行间碎片是指逻辑上顺序的页,或者行在磁盘上不是顺序存储的。对全表扫描和聚簇索引扫描之类影响很大

剩余空间碎片:

? 指页中有大量空余空间,会导致服务器读取大量不需要的数据,从而造成浪费

对于MyISAM ,这三种情况都会出现,InnoDB不会出现短小的行碎片,InnoDB会移动短小的行并重写到一个片段中。

可以通过optimize table或者导出再导入的方式来重新整理数据。

5.6 总结

在选择索引和编写利用这些索引查询时,如下三个原则:

  1. 选择合适的索引以避免单行查找
  2. 尽可能使用 数据原生顺序避免额外的排序
  3. 尽可能使用覆盖索引
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-11-05 00:34:29  更:2022-11-05 00:38:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:12:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码