MySQL7:性能优化
性能优化
优化MySQL数据库是数据库管理员和数据库开发人员的必备技能。MySQL优化,一方面是找出系统的瓶颈,提高MySQL数据库的整体性能;一方面需要合理的结构设计和参数调整,以提高用户操作响应的速度;同时应该尽可能节省系统资源,以便系统可以提供更大负荷的服务。
MySQL数据库优化是多方面的,有几条优化原则:
1、减少系统的瓶颈
2、减少资源的占用
3、增加系统的反应速度
优化查询
1、索引对查询的影响
我有一个book表,里面有10条记录,没有索引查询的时候:
使用了索引:
看到不使用索引的时候rows为10,也就是说扫描了表中的10条记录,而使用索引,rows为1,说明扫描了表中的1条记录,其查询速度自然比不使用索引快。而且possible_keys和key的值都是BkNameIdx,说明查询时使用了BkNameIdx索引
2、使用索引查询
使用索引查询有几种特殊情况,特别提一下:
(1)使用LIKE关键字的查询语句
在使用LIKE关键字进行查询的查询语句中,如果匹配字符串的第一个字符为"%",索引不会起作用,只有"%"不在第一个位置,索引才会起作用
(2)使用多列索引的查询语句
MySQL可以为多个字段创建索引,一个索引可以包含16个字段,对于多列索引,只有查询条件中使用了这些字段中第一个字段时,索引才会被使用
(3)使用OR关键字的查询语句
查询语句的查询条件中只有OR关键字,且OR前后两个条件都是索引时,查询才会使用索引,否则,查询将不使用索引
3、避免使用SELECT *命令
从表中读取的数据越多,查询会变得越慢,始终指定需要的列,是一个良好的习惯
4、永远为每张表设置一个ID
我们应该为数据库里的每张表都设置一个ID作为其主键,而且最好是一个INT型的,并设置上自动增加的AUTO_INCREMENT标识。就算有些VARCHAR字段类型的值,它永远不会重复,也不要设置为主键,使用VARCHAR类型来当主键会使性能下降
数据库结构优化
一个好的数据库设计方案对于数据库的性能常常会起到事半功倍的效果,合理的数据库结构不仅可以使数据库占用更小的磁盘空间,而且能够使查询速度更快。数据库结构的设计,需要考虑数据冗余、查询和更新的速度、字段的数据类型是否合理等多方面内容。
下面提供几条优化数据库结构的建议:
1、将字段很多的表分解为多个表
对于字段很多的表,如果有些字段的使用频率很低,可以将这些字段分离出来形成新表。因为当一个表的数据量很大时,会由于使用频率低的字段的存在而变慢,通过分解字段,可以提高表的查询效率
2、增加中间表
对于需要经常联合查询的表,可以建立中间表以提高查询效率。通过建立中间表,把需要经常联合查询的数据插入到中间表,然后将原来的联合查询改为对中间表的查询,以此来提高查询效率
3、优化插入记录的速度
插入记录时,影响插入速度的主要是索引、唯一性校验、一次插入记录条数等,根据这些情况,可以分别进行优化(以使用InnoDB的表为例):
(1)禁用唯一性检查
插入数据时,MySQL会对插入的记录进行唯一性校验。这种唯一性校验也会降低插入记录的速度,为了降低这种情况对查询速度的影响,可以在插入记录之前禁用唯一性检查,等到记录插入完毕之后再开启:
SET UNIQUE_CHECKS = 0;
开启唯一性检查:
SET UNIQUE_CHECKS = 1;
(2)禁用外键检查
插入数据之前禁止对外键的检查,数据插入之后再恢复对外键的检查,禁用外键检查的语句如下:
SET foreign_key_checks = 0;
恢复对外键检查的语句为:
SET foreign_key_checks = 1;
(3)禁止自动提交
插入数据之前禁止事物的自动提交,数据导入完成之后,执行恢复自动提交操作。禁止自动提交的语句如下:
SET autocommit = 0;
恢复自动提交的语句为:
SET autocommit = 1;
MySQL7:性能优化的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Android性能优化之利用LeakCanary检测内存泄漏及解决办法
前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来. ...
随机推荐
- git提交忽略文件或文件夹
在项目根目录下面 添加 .gitignore文件 文件中每一行表示需要忽略的文件的正则表达式. .gitignore文件过滤有两种模式,开放模式和保守模式 1. 开放模式负责设置过滤哪些文件和文件夹 ...
- s11 day 101 python Linux环境安装 与路飞项目支付功能
from django.conf.urls import urlfrom django.contrib import adminfrom app01 import viewsurlpatterns = ...
- S11 day 94 RestFramework 之 APIView视图
VIEW视图(Django自带的) 1. url url(r'login/$', views.login.as_view()), 2.点开 as_view() , as_view()为类方法. l ...
- day85 ModuleForm Form组件
1 forms组件与modelform组件 forms组件: https://www.cnblogs.com/yuanchenqi/articles/9036474.htmlmodelForm组件:h ...
- Day 49 CSS样式.
外部样式 1.元素选择器 /*1. 元素选择器*/p{ color :red} <p>1.我是一个p标签</p> 2.ID选择器 /*2 ID 选择器*/#p{ color : ...
- 629. K Inverse Pairs Array
Given two integers n and k, find how many different arrays consist of numbers from 1 to n such that ...
- 深入set和dict
一. 浅拷贝和深拷贝 浅拷贝:就是创建一个具有相同类型,相同值但不同id的新对象. 浅拷贝产生的新对象中可变对象的值在发生改变时,会对原对象的值也做出改变,因为这些值是同一个引用. a = [1 ...
- jmeter插件之自定义场景图(万能场景设计)
添加扩展插件 自定义线程组:jp@gc - Ultimate Thread Group 此线程组功能强大,可以实现多种场景设置,添加路径如图 参数含义解释 Start Threads Count:当前 ...
- 大数据技术之_19_Spark学习_01_Spark 基础解析小结(无图片)
1.准备安装包 2.Spark Standalone 即独立模式 2.1.解压安装包到你安装的目录. 2.2.拷贝 conf 目录下的 slaves 文件,将 slave 节点的 hostname ...
- js之global 对象 方法
global 作为js的全局对象,但其是无法直接访问的,但是在浏览器中浏览器是将这个对象当做是window对象的一部分,即Date 等Global的属性使用window.Date 可访问到 1.url ...