码迷,mamicode.com
首页 > 数据库 > 详细

mysql优化

时间:2015-02-28 11:34:07      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:mysql   数据库   sql语句   

优化是什么?最快速度?最少资源消耗?性能最稳定?

优化是在合理的利用资源达到,合理的资源消耗,以及较快的响应速度。最主要是稳定。

优化先要弄懂,花费的时间、资源 去哪了


sql优化顺序,

1、sql建表优化,

  一、所占资源(定义类型)

  二、索引(是否需要创建索引,索引所占大小)

2、sql语句优化,

  一、此优化最好是真实环境(参考下列查询时间)。

3、sql资源优化

  一、配置文件优化,定义缓存优化,定义临时表、排序等资源的优化(具体参照公司服务器的资源与    多跑得业务量以及其他服务所占资源进行优化)。

  二、硬件优化:

    1、 拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多.

    2、不惜一切代价避免使用Swap交换分区 – 交换时是从硬盘读取的,它的速度很慢.

    3、使用高级的RAID,最好是RAID10或更高,避免RAID5,确保数据库完整性的校验是要付出代价的。

    4、mysql数据与其他盘分开。

    5、在Linux中设置swappiness的值为0,cat /proc/sys/vm/swappiness可以查询(默认60)

    6、操作系统建议64位,内使用更大内存。

    7、切勿强制杀死一个MySQL进程 – 你会损坏数据库和正在运行备份的程序.

    8、当写入时,使用 innodb_flush_method=O_DIRECT 来避免双缓冲.

    9、分配足够的 innodb_buffer_pool_size 来加载整个 InnoDB 文件到内存中– 少从磁盘中读取

    10、不要将 innodb_log_file_size 参数设置太大, 这样可以更快同时有更多的磁盘空间 – 丢掉多的日志通常是好的,在数据库崩溃后可以降低恢复数据库的时间.

    11、不要混用 innodb_thread_concurrency 和 thread_concurrency 参数– 这2个值是不兼容的.

    12、分配一个极小的数量给 max_connections 参数 – 太多的连接会用尽RAM并锁定MySQL服务.

    13、保持 thread_cache 在一个相对较高的数字,大约 16 – 防止打开连接时缓慢

    14、使用skip-name-resolve参数 – 去掉 DNS 查找

    15、增大temp_table_size值,增大max_heap_table_size值,以防止写入磁盘

    16、不要把sort_buffer_size值设置的太高,否则的话你的内存将会很快耗尽

    17、根据key_read_requests和key_reads值来决定key_buffer的大小,一般情况下key_read_requests应该比key_reads值高,否则你不能高效的使用key_buffer

    以上硬件优化需要更据表、语句 资源等进行优化。一句话:具体问题,具体优化。

mysql 优化-语句优化:

1、查询时间

SELECT @@profiling;#查询是否开启profile

set profiling=1; #开启profile

执行查询语句,

show profiles; #查询所记录的profile语句的id

show profile fro query 1(ID) # 1为profile记录的id

explain sql语句; #查询语句执行的方式。


后续添加···

本文出自 “linux运维” 博客,请务必保留此出处http://8487092.blog.51cto.com/8477092/1615874

mysql优化

标签:mysql   数据库   sql语句   

原文地址:http://8487092.blog.51cto.com/8477092/1615874

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!