MySql性能优化 - 基本性能优化方向

1.影响性能的因素

    // 影响数据库性能几个因素,
如表,查询和配置设置:在硬件层面,这些软件结构导致CPU和I / O操作,所以必须尽量减少并尽可能高效。在处理数据库性能时,首先要了解软件方面的高级规则和准则,并使用执行时间来衡量性能。为了更好的性能,我们需要了解更多mysql内部发生的事情,并开始检测CPU周期和I / O操作。

// 性能优化的两个出发点
第一类:从现有的软件和硬件配置中获得最佳的数据库性能。
第二类:通过改写mysql源码,优化mysql本身,或者开发自己的存储引擎和硬件设备来扩展mysql

2.从数据库层面进行优化

    数据库的最基本优化是其基本设计结构的优化。
1.每个事物是否有正确的设计数据结构(也就是表是否有正确设计的字段),更重要的是,每个字段是否有正确的数据类型(也就是字段类型)。
2.这个表是不是设计了正确而且高效的索引来提高性能
3.这个表是否根据业务使用了正确的存储引擎,比如查询型表使用 MyISAM 引擎,事务型表使用 InnoDB 存储引擎(但是事情却不总是这样的,在操作较多的情况下,优化过的 InnoDB 的性能却是比简单的 MyISAM 高的)
4.某个字段是否合理使用压缩,来降低对磁盘的I/O操作
5.配置合理的缓存参数,让他足以满足对数据的访问需求,但也不能太大,这样会引起物理内存过载。主要配置的三个点是InnoDB 缓存池,MyISAM 密钥缓存和 mysql 查询缓存。

3.从硬件层面进行优化

    随着数据库访问次数的增加,所有的操作都将要受到硬件的限制,所以,你应该评估是否应该调整应用程序或者重新配置服务器来避免这些硬件瓶颈,再或者升级硬件。
硬件层面主要是如下几个问题。
1.寻找数据,现在主流的磁盘理论上可以做到1秒内进行100次的寻找。但是如果需要更好的性能,你可以选择使用更好的磁盘,或者把数据分发到多个磁盘上。
2.读取数据,现在主流的磁盘在速度上大概可以达到10-20MB每秒的速度。但是当持续高负载访问的时候,这个数值会降低(你的U盘写着每秒20MB传输速度,可是实际上当你传输一个10GB的文件时,你的传输速度可能维持在4MB每秒,如果这10GB文件是10万个时,速度可能只有几百KB每秒,深有体会,不多说)。
3.CPU性能,某些占用内存很多的表会出现这个瓶颈,一般的表不会。
4.内存带宽,有些极端的情况是,CPU需要的数据超过了CPU的缓存,比如普通的笔记本三级缓存一般4MB,好点的8MB。这个情况极少发生,但并不是没有。