SQL语句及索引。按优化成本和优化效果两个不同维度排序,如下:
>系统配置>表结构设计>SQL语句及索引。
    优化效果:硬件升级<系统配置<表结构设计<SQL语句及索引。
  即成本越高优化效果反而是最小的,所以如果做优化选择在条件许可下必然选择成本小效果好的。
  对于MySQL的性能优化,本文从软件可支配角度对系统配置优化进行探究,对其实现方式进行实践。
保证从内存中读取数据

MySQL会在内存中保存一定的数据,通过LRU算法将不常访问的数据保存在硬盘文件中。尽可能的扩大内存中的数据量,将数据保存在内存中,从内存中读取数据,可以提升MySQL性能。

    具体操作就是修改配置参数innodb_buffer_pool_size,将其扩大能够全然从内存中读取数据并最大限度降低磁盘操作。

   show global status like 'innodb_buffer_pool_pages_%';

      

mysql 提升性能 mysql性能优化配置_系统配置

innodb_buffer_pool_size默认为128M,理论上可以扩大到内存的3/4或4/5。直接修改配置my.cnf

        innodb_buffer_pool_size = 750M

        

mysql 提升性能 mysql性能优化配置_MySQL_02

    如果是专用的MySQL Server可以禁用SWAP

       

mysql 提升性能 mysql性能优化配置_数据_03

-a ,可关闭所有交换设备和文件。

    让数据库占用更多内存的操作方式,如果要不影响其他同机运行的文件对内存设备要求比较高。
  2、数据预热

    默认情况,仅仅有某条数据被读取一次后,才会缓存在 innodb_buffer_pool——即不用不加载。所以,数据库刚刚启动,须要进行数据预热,将磁盘上的全部数据缓存到内存中。数据预热能够提高读取速度,具体操作如下:

对于InnoDB数据库,编写数据预热的脚本命名为:loadtomem.sql
    2)执行命令:mysql -uroot -pXXXX -AN < /root/loadtomem.sql > /root/loadtomem.sql

在需要数据预热时,比如重启数据库执行命令:mysql -uroot < /root/loadtomem.sql > /dev/null 2>&1

  3、降低磁盘写入次数

增大redolog,减少落盘次数:innodb_log_file_size 设置为 0.25 * innodb_buffer_pool_size。

bin-log开生产中不开通用查询日志,遇到性能问题开慢查询日志。

redolog策略 innodb_flush_log_at_trx_commit设置为0或2。如果不涉及非常高的安全性 (金融系统),或者基础架构足够安全,或者事务都非常小,都能够用 0或者 2 来减少磁盘操作。

  4、提高磁盘读取性能

     这个就是内存磁性能的问题了,经济条件许可下采购性能更好的内存盘。