【mysql 优化 1】优化概述
数据库性能取决于几个数据库层面的因素,比如:表设计,查询语句,配置。 这些软件结构导致你必须在CPU和I/O 操作的硬件层面做到尽可能的最小化和高效!当你关注于数据库性能时,你需要了解软件层面更高层次的规则和指导建议,并使用wall-clock去测试性能。 而当你成为一个专家时,你更多需要了解的是内部到底发生了什么,并且测试一些东西,包括:CPU和I / O 操作。
一般用户希望通过配置已有的软件和硬件去获取最好的数据库性能,高级用户则寻找机会去提升MySQL软件本身的性能,或者开发出她们自己的存储引擎和硬件程序去扩展MYSQL的生态系统。
一、基于数据库级别的优化
一个可以让数据库程序变得更快的重要因素,是他的基础设计:
1,表结构是否合适???特别是,每一个数据列,是否拥有正确的数据类型???每一个工作表,是否拥有正确的数据列???举个例子:在一个频繁执行更新操作的程序中,通常拥有很多数据列比较少的表单,而需要大数据分析的程序,通常拥有少量的具有很多数据列的表单!
2,是否拥有正确的索引,使得查询更加高效???
3,是否为每个表使用了正确的存储引擎???是否使用了当前应用引擎的最高效最优化的功能???比如:选择一个支持事务的存储引擎(InnoDB)和一个不支持事务的存储引擎(MyISAM),将会对性能和可扩展性带来重要的影响!
备注:InnoDB是每一个新建表单的默认存储引擎。在实践中,InnoDB的高级性能特征意味着InnoDB的表单往往要优于简单的MyISAM表单,尤其是对于操作比较频繁的数据库。
4,是否每个表使用适当的行格式???这个取决于表的存储引擎。特别地,压缩表使用较少的磁盘空间,因此需要较少的磁盘I / O来读取和写入数据。压缩适用于所有InnoDB引擎的工作表,和只读的MyISAM表。
5,应用程序是否使用正确的锁策略???例如:通过允许共享访问,使得数据库操作可以并行执行。而且,请求的合理优先访问,使得操作可以获得最高优先级! 再次声明,对于存储引擎的选择是非常重要的。InnoDB数据库引擎可以在不需要你手动操作的情况下处理绝大部分的有关于锁的问题,支持更好的并发操作,并且减少你调整代码的实验次数!
6,对于缓存的内存配置是否正确???这是说,是否足够大去支持频繁的数据访问,但并不是大到超出物理空间并产生分页。主要的内存区域被配置到InnoDB的缓冲池,MyISAM的主键缓存,和Mysql的查询缓存!
二、基于硬件级别的优化
当数据库操作访问变得越来越频繁的时候,任何数据库的性能都受限于硬件设施。 一个DBA必须评估是否可以通过调整应用程序或者配置去规避这些瓶颈,或者是否需要更多的硬件资源。 典型的系统瓶颈通常有以下情况:
1,磁盘寻找。他花费时间在磁盘上去找到一条数据。在现代化的磁盘中,这个时间通常意味着慢于10ms。所以,在理论上,我们可以在1秒钟内进行100次寻找。对于一个单表的优化来说,通过用新的磁盘去提升这个寻找时间,是非常缓慢,并且非常困难的。去对此进行优化的方式是:分发这些数据到更多的磁盘!
2,磁盘读写。当磁盘处于正确的位置,我们需要读写数据。对于现代化的磁盘来说,一个磁盘至少能支持每秒10-20MB的吞吐量。优化此类状况比磁盘寻找更容易,因为你可以从多个磁盘中并行读取!
3,CPU周期。当数据在主内存中时,我们必须处理它才能得到结果。拥有较大的表与内存量的平衡是最常见的限制因素。但通过使用较小的表单,速度通常不是问题!
4,内存带宽。当CPU需要容纳更多的数据(更多是相对于CPU缓存),主内存带宽成为了一个瓶颈。对于大多数系统来说,这虽然并不是一个常见的瓶颈,但也是一个需要注意的点。
三、性能和简单便携的平衡
在一个便携式的Mysql程序中,应用高性能的SQL扩展语句:在一个语句块中使用/*! */,注释Mysql特定的关键字。其他的SQL服务器,忽略被注释的关键字!
【mysql 优化 1】优化概述的更多相关文章
- 优秀后端架构师必会知识:史上最全MySQL大表优化方案总结
本文原作者“ manong”,原创发表于segmentfault,原文链接:segmentfault.com/a/1190000006158186 1.引言 MySQL作为开源技术的代表作之一,是 ...
- MySQL 大表优化方案(长文)
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...
- DB-MySQL:MySQL 语句性能优化
ylbtech-DB-MySQL:MySQL 语句性能优化 1.返回顶部 1. MySQL概述1.数据库设计 3范式2.数据库分表分库---会员系统() 水平分割(分页如何查询)MyChar .垂直3 ...
- mysql库表优化实例
一.SQL优化 1.优化SQL一般步骤 1.1 查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; Com_select:执行SELECT操作的次数,一次查询累加1.其他类似 以下 ...
- Mysql的SQL优化指北
概述 在一次和技术大佬的聊天中被问到,平时我是怎么做Mysql的优化的?在这个问题上我只回答出了几点,感觉回答的不够完美,所以我打算整理一次SQL的优化问题. 要知道怎么优化首先要知道一条SQL是怎么 ...
- mysql查询性能优化
mysql查询过程: 客户端发送查询请求. 服务器检查查询缓存,如果命中缓存,则返回结果,否则,继续执行. 服务器进行sql解析,预处理,再由优化器生成执行计划. Mysql调用存储引擎API执行优化 ...
- MYSQL数据库的优化
我们究竟应该如何对MySQL数据库进行优化?下面我就从MySQL对硬件的选择.MySQL的安装.my.cnf的优化.MySQL如何进行架构设计及数据切分等方面来说明这个问题. 服务器物理硬件的优化 在 ...
- 1229【MySQL】性能优化之 Index Condition Pushdown
转自http://blog.itpub.net/22664653/viewspace-1210844/ [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...
- mysql中的优化, 简单的说了一下垂直分表, 水平分表(有几种模运算),读写分离.
一.mysql中的优化 where语句的优化 1.尽量避免在 where 子句中对字段进行表达式操作select id from uinfo_jifen where jifen/60 > 100 ...
- MySQL 调优/优化的 100 个建议
MySQL 调优/优化的 100 个建议 MySQL是一个强大的开源数据库.随着MySQL上的应用越来越多,MySQL逐渐遇到了瓶颈.这里提供 101 条优化 MySQL 的建议.有些技巧适合特定 ...
随机推荐
- 【Python图像特征的音乐序列生成】使用Python生成简单的MIDI文件
这个全新的Python音乐创作系列,将会不定期更新.写作这个系列的初衷,是为了做一个项目<基于图像特征的音乐序列生成模型>,实时地提取照片特征,进行神经网络处理,生成一段音乐. 千里之行, ...
- MFC【exe】工程中的文件大致信息(翻译的)
在工程文件夹中有个readme文件,下面是翻译过来的. ======================================================================== ...
- 如何将SAP Multi Target应用部署到SAP云平台的Cloud Foundry环境去
SHINA是SAP HANA Interactive Education的缩写,是一个demo应用,用于演示如何开发SAP HANA原生应用. 这个应用包含了sample数据以及HANA数据库表,vi ...
- rhythmbox插件开发笔记3:安装 makefile && schema && po
本篇主要讲通过makefile方式来安装rhythmbox插件的相关知识. makefile 如果makefile是什么,请自行谷歌 参考了pandasunny同学的rhythmbox-baidu-m ...
- line-block,white-space,overflow
line-block:设置行间的距离(行高),只能控制块级元素,span这样的行内元素无法控制,并且当块级元素 中包含span的时候设置line-block会使span的自适应高度小于块级元素的高度, ...
- Python socket 粘包
目录 1 TCP的三次握手四次挥手 0 1.1 三次握手 1 1.2 四次挥手 2 2 粘包现象 3 2.1 基于TCP制作远程执行命令操作(win服务端) 4 2.1 基于TCP制作远程执行命令操作 ...
- Python面向对象(三)
类的使用:实例化.属性引用 实例化 g1 = Garen('草丛伦1') # 实例化 g2 = Garen('草丛伦2') g3 = Garen('草丛伦3') 类的属性:变量和函数 print(Ga ...
- ssh整合思想初步 struts2与Spring的整合 struts2-spring-plugin-2.3.4.1.jar下载地址 自动加载Spring中的XML配置文件 Struts2下载地址
首先需要JAR包 Spring整合Structs2的JAR包 struts2-spring-plugin-2.3.4.1.jar 下载地址 链接: https://pan.baidu.com/s/1o ...
- 自定义AlertView的方法和改变Alert的弹出位置以及其宽度
此方法在IOS7中不适合 一.自定义AlertView 1.首先新建一个OC类继承与AlertView. 2.然后再.m中添加方法 - (void)layoutSubviews 可以再这个方法里边改变 ...
- pandas归一化操作
归一化操作有两种 1.max和min的归一化操作 min-max标准化(Min-Max Normalization) 返回结果0~1 公式: 实例: 如: 随机生成假数据如下 df = DataFra ...