MySQL 性能调优之索引
原文:http://bbs.landingbj.com/t-0-245452-1.html
对于索引的优化,我们第一需要找到合适的字段,第二创建索引找到合适的顺序,第三要找到合适的比例,第四是要做合适的维护。
第一需要找到合适的字段。方法有:提高过滤性、降低索引的更新分裂、避免无效索引、非不得已不用外键。
在真实环境中,优化索引主要从以下方面考虑:
给索引的字段设置默认值;
不要让含NULL的字段进入组合索引;
删除过滤性低的字段的索引,可能性能更差;
不能在索引字段上做运算,会失效;
避免频繁更新的字段进入索引,增加IO负担;
尽量覆盖索引,因为MySQL排序效率不高;
第二创建索引找到合适的顺序。方法有提早过滤、减少排序。
在真实环境中,优化索引主要从以下方面考虑:
过滤性越高的字段需要越靠前;
核心SQL覆盖索引,确保尽可能高效;
不干扰过滤前提下,排序字段进入索引;
多SQL综合考虑,重复利用索引;
第三要找到合适的比例,方法是控制索引长度,尤其是较长的字符串字段。
在真实环境中,优化索引主要从以下方面考虑:
必须回表取数据时,字符字段前缀索引;
不用回表取数据时,建议整个字段;
第四是要做合适的维护,方法是定期维护存在频繁增删改字段的索引。
在真实环境中,优化索引主要从以下方面考虑:
在可以的前提下,每月维护(重建)非核心表上的索引;
在可以的前提下,每季/年维护核心表上的索引。
在做DBA的过程中,才知道索引的优化对于一个系统而言是多么的重要。记住很重要的一条:索引不在多,而在于找到最合适的。
MySQL 性能调优之索引的更多相关文章
- MySQL性能调优——锁定机制与锁优化分析
针对多线程的并发访问,任何一个数据库都有其锁定机制,它的优劣直接关系着数据的一致完整性与数据库系统的高并发处理性能.锁定机制也因此成了各种数据库的核心技术之一.不同数据库存储引擎的锁定机制是不同的,本 ...
- MySQL性能优化总结___本文乃《MySQL性能调优与架构设计》读书笔记!
一.MySQL的主要适用场景 1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图: 三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎 ...
- MySQL 性能调优之存储引擎
原文:http://bbs.landingbj.com/t-0-246222-1.html http://bbs.landingbj.com/t-0-245851-1.html MySQ ...
- MySQL性能调优的10个方法 - mysql数据库栏目
摘要: https://edu.aliyun.com/a/29036?spm=5176.11182482.related_article.1.hbeZbF 摘要: MYSQL 应该是最流行了 WEB ...
- MySql(十一):MySQL性能调优——常用存储引擎优化
一.前言 MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.本章将介绍最为常用的两种存储引擎进行针对性的优化建议. 二.MyISAM存储 ...
- MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控
第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...
- MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案
第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...
- MySQL性能调优与架构设计——第 16 章 MySQL Cluster
第 16 章 MySQL Cluster 前言: MySQL Cluster 是一个基于 NDB Cluster 存储引擎的完整的分布式数据库系统.不仅仅具有高可用性,而且可以自动切分数据,冗余数据等 ...
- MySQL性能调优与架构设计——第 15 章 可扩展性设计之Cache与Search的利用
第 15 章 可扩展性设计之Cache与Search的利用 前言: 前面章节部分所分析的可扩展架构方案,基本上都是围绕在数据库自身来进行的,这样是否会使我们在寻求扩展性之路的思维受到“禁锢”,无法更为 ...
随机推荐
- 洛谷模拟NOIP考试反思
洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比 ...
- Ubuntu 普通用户无法启动Google chrome
删除 /home/你的用户名/.config/google-chrome文件,再打开就好了 root@ecos:cd /home/ecos/.config root@ecos:~/.config# r ...
- bsp 总结
_board_128.c里放硬件不同的东西,如gpio等 product下code里面的cspkernel里面放内核模块补充的
- springboot统一异常处理类及注解参数为数组的写法
统一异常处理类 package com.wdcloud.categoryserver.common.exception; import com.wdcloud.categoryserver.commo ...
- ImportError: cannot import name 'Process' from 'multiprocessing'
from multiprocessing import Process import os def run_proc(name): print 'Run child process %s (%s).. ...
- ubuntu18.04 递归批量删除op_test_xml/ 目录下 .pyc后缀的文件
find op_test_xml/ -type f -name "*.pyc" -exec rm -f {} \;
- 详解Transformer模型(Atention is all you need)
1 概述 在介绍Transformer模型之前,先来回顾Encoder-Decoder中的Attention.其实质上就是Encoder中隐层输出的加权和,公式如下: 将Attention机制从Enc ...
- 待解决问题 :JDBC indexInsert.addBatch(); 为什么不生效 PSTM
JDBC indexInsert.addBatch(); 为什么不生效 PSTM
- Linux下简单的缓冲区溢出
缓冲区溢出是什么? 科班出身,或者学过汇编的应该知道,当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被“撑爆”,从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持 ...
- solidity learning (1)
学习文档笔记:http://solidity-cn.readthedocs.io/zh/develop/layout-of-source-files.html 1.pragma solidity ^0 ...