MySQL-快速入门(14)MySQL性能优化
1、MySQL性能优化包括查询速度优化、数据库结构优化、数据库服务器优化等。
优化的切入点:合理的结构设计、表结构、索引、查询语句。
2、show status查询数据库的性能参数
show status like 'value'; value:
Connections=>连接MySQL服务器的次数
Uptime=>MySQL服务器的上线时间
Slow_queries=>慢查询的次数
Com_select=>查询操作的次数
Com_insert=>插入操作的次数
Com_update=>更新操作的次数
Com_delete=>删除操作的次数
3、查询优化
1》分析查询语句:explain语句、describe语句
explain [extended] select select_options
describe select select_options
或者
desc select select_options
2》索引优化:给相关字段加上索引
3》使用索引查询:一些不走索引的情况
1>使用like关键字查询语句:%在匹配字符串第一个,导致不走索引。
2>使用多列索引的查询语句:没有使用多列索引的第一个字段,导致不走索引。
3>使用or关键字的查询语句:查询语句的查询条件只有or关键字,且or前后的两个条件中的列都是索引列时,查询才使用索引。否则不走索引。
4>优化子查询:子查询需要建立临时表,增加开销。使用join连接查询代替子查询,不需要创建临时表,所以效率更高。
4、优化数据库结构
1》将字段很多的表分解成多个表
2》增加中间表:频繁联合查询、查询业务比较复杂
3》增加冗余字段:对A、B表经常需要关联、但A表只使用到B表的少数字段,可以直接在A表增加这些字段。
4》优化插入记录的速度:
影响插入速度的主要是索引、唯一性约束、一次插入记录条数等。
=>对于MyISAM引擎的表:
1>禁用索引:对于非空表。空表不需要这样操作。
alter table tb_name disable keys;
//
alter table tb_name enable keys;
2>禁用唯一性检查
set unique_checks=0;
//
set unique_checks=1;
3>使用批量插入
insert into tb_name values
(value,value,...),
(value,value,...),...;
4>使用load data infile批量导入:能使用load data infile的尽量使用这种方式,比insert快。
=>对于InnoDB引擎的表:
1>禁用唯一性检查:用法同MyISAM引擎的用法。
2>禁用外键检查
set foreign_key_checks=0;
//
set foreign_key_checks=1;
3>禁止自动提交
set autocommit=0;
//
set autocommit=1;
5》分析表、检查表、优化表
分析表:主要分析表的关键字分布。
检查表:主要是检查表是否存在错误。
优化表:主要是消除删除或更新造成的空间浪费。
1>分析表:analyze table语句
--local关键字是no_write_to_binlog关键字的别名,二者执行过程不写入二进制日志
--使用analyze table分析表的过程中,数据库系统会自动对表加一个只读锁
--即过程当中只能从表读取数据,不能插入或者更新数据
--可以分析InnoDB、BDB、MyISAM类型的表
analyze [local | no_write_to_binlog] table tb_name[,tb_name]...
2>检查表
--可以检查InnoDB、MyISAM类型的表是否存在错误。
--对于MyISAM类型的表,check table语句还会更新关键字统计数据
--还可以检查视图是否有错误,如在视图中定义被引用的表已经不存在了
--同样会给表加只读锁
check table tb_name[,tb_name] ... [option] ... option={quick | fast | medium | extended | changed} --只对MyISAM类型的表有效,InnoDB类型的表无效
3>优化表
--对InnoDB、MyISAM表有效。但optimize table只能优化表中varchar、blob、text类型的字段
--local是no_wirte_to_binlog的别名,指定不写入二进制日志
--optimize table语句可以消除删除、更新造成的文件碎片
--执行过程会给表加只读锁
optimize [local | no_write_to_binlog] table tb_name[,tb_name] ...
5、优化MySQL服务器
1》优化服务器硬件
1>配置大内存、增加缓冲区容量
2>配置高速磁盘子系统
3>合理分布磁盘I/O,将磁盘I/O分散在多个设备上,减少资源竞争等待,提高并行能力。
4>配置多处理器
2》优化MySQL服务的参数
1>待总结...
MySQL-快速入门(14)MySQL性能优化的更多相关文章
- MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化
第9章 MySQL数据库Schema设计的性能优化 前言: 很多人都认为性能是在通过编写代码(程序代码或者是数据库代码)的过程中优化出来的,其实这是一个非常大的误区.真正影响性能最大的部分是在设计中就 ...
- Mysql数据库调优和性能优化的21条最佳实践
Mysql数据库调优和性能优化的21条最佳实践 1. 简介 在Web应用程序体系架构中,数据持久层(通常是一个关系数据库)是关键的核心部分,它对系统的性能有非常重要的影响.MySQL是目前使用最多的开 ...
- 老李分享:MySql的insert语句的性能优化方案
老李分享:MySql的insert语句的性能优化方案 性能优化一直是测试人员比较感兴趣的内容,poptest在培训学员的时候也加大了性能测试调优的方面的内容,而性能优化需要经验的积累,经验的积累依 ...
- MySQL 5.6&5.7 性能优化 TOP10(转)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/NLOneDay/article/deta ...
- MySQL快速入门(二)
目录 MySQL快速入门(二) 约束条件 自增 自增的特性 主键 外键 级联更新/删除 表与表之间的关系 外键约束 操作表方法 查询关键字 练习数据 select··from where 筛选 gro ...
- 【转】MySQL批量SQL插入各种性能优化
原文:http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=403182899&idx=1&sn=74edf28b0bd29 ...
- MySql基础笔记(一)Mysql快速入门
Mysql快速入门 一)基本概念 1)表 行被称为记录,是组织数据的单位.列被称为字段,每一列表示记录的一个属性. 2)主键 主键用于唯一的标识表中的每一条记录.可以定义表中的一列或者多列为主键, 但 ...
- MySQL 快速入门教程
转:MySQL快速 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数据 ...
- MySQL 快速入门(一)
目录 MySQL快速入门 简介 存储数据的演变过程 数据库分类 概念介绍 MySQL安装 MySQL命令初始 环境变量配置 MySQL环境变量配置 修改配置文件 设置新密码 忘记密码的情况 基本sql ...
- 深入MySQL(四):MySQL的SQL查询语句性能优化概述
关于SQL查询语句的优化,有一些一般的优化步骤,本节就介绍一下通用的优化步骤. 一条查询语句是如何执行的 首先,我们如果要明白一条查询语句所运行的过程,这样我们才能针对过程去进行优化. 参考我之前画的 ...
随机推荐
- 原生ajax 请求
什么是ajax AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新, ...
- IOS上编译boost库
环境:xcode9mac os 10.13 1.下载boost库并解压2.cd到解压后的文件包内,执行 sh bootstrap.sh(解压后会得到这个脚本文件).3.执行./b2 编译整个库.4.经 ...
- JAVA笔记28-正则表达式(补充、不重要)
一.Greedy(贪婪的)尽可能多的匹配,Reluctant(不情愿的)尽可能少的匹配.Possessive(独占的)不常用. Greedy 数量词 X? X,一次或一次也没有 X* X,零次或多次 ...
- 对ECMAScript的研究-----------引用
ECMAScript 新特性与标准提案 一:ES 模块 第一个要介绍的 ES 模块,由于历史上 JavaScript 没有提供模块系统,在远古时期我们常用多个 script 标签将代码进行人工隔离.但 ...
- Mysql5.7.26解压版(免安装版)简单快速配置步骤,5分钟搞定(win10-64位系统)
第一次安装mysql环境的时候,总会遇到各种各样的坑,在尝试了安装版和解压版的数据库之后,感觉mysql的解压版更加的简单方便,省去好多时间做专业的事情 我这里选择的是5.7.26版本,解压版下载地址 ...
- 模板_LCA
// luogu-judger-enable-o2 #include<bits/stdc++.h> #define maxn 1000002 //#define int long long ...
- 2-gitblit添加项目,项目成员
创建代码仓库,如下图所示, 然后填个项目的名称和描述即可点击保存. 用户也是,还是相同的位置,点击用户,而不是用户中心,创建用户也是填写用户名称和简称,最后对在旁边有个用户的权限,选择相应的代码仓库即 ...
- SQL server 从创建数据库到查询数据的简单操作
目录. 创建数据库 创建表 插入数据 查询 1.创建数据库 --创建数据库 create database db_Product go --使用数据库use db_Productgo 2.创建表 -- ...
- JDBC API访问数据库的基本步骤。
JDBC本质:官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这个接口,提供数据库驱动jar包. 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类. 任 ...
- Detectron系统实现了最先进的物体检测算法https://github.com/facebookresearch/Detectron
,包括Mask R-CNN. 它是用Python编写的,支持Caffe2深度学习框架. 不久前,FAIR才开源了语音识别的工具wav2letter,戳这里看大数据文摘介绍<快讯 | Facebo ...