您的位置:首页 > 数据库 > MySQL

mysql优化

2015-02-28 10:31 232 查看
优化是什么?最快速度?最少资源消耗?性能最稳定?
优化是在合理的利用资源达到,合理的资源消耗,以及较快的响应速度。最主要是稳定。
优化先要弄懂,花费的时间、资源 去哪了

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语句; #查询语句执行的方式。

后续添加···
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据库 sql语句