`
weiguo21
  • 浏览: 17293 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

mysql优化思路

阅读更多
调优思路:

1.数据库设计与规划--以后再修该很麻烦,估计数据量,使用什么存储引擎

2.数据的应用--怎样取数据,sql语句的优化

3.mysql服务优化--内存的使用,磁盘的使用

4.操作系统的优化--内核、tcp连接数量

5.升级硬件设备

磁盘io规划

raid技术:raid0[xfs]

swap分区:最好使用raid0

磁盘分区:一个库放到一个分区上或一个磁盘上

物理分区

create table t1(id int,name char(20)) data directory='/data/' index directory ='/data';

mkdir /data

chown mysql.mysql /data

mysql> show variables like '%part%';

4.操作系统的优化

网卡bonding技术,

tcp连接数量限制

优化系统打开文件的最大限制

关闭操作系统不必要的服务

5.mysql服务优化

show status 看系统的资源

show variables 看变量,在my.cnf配置文件里定义的

show warnings 查看最近一个sql语句产生的错误警告,看其他的需要看.err日志

show processlist显示系统中正在运行的所有进程。

show errors

启用mysql慢查询:---分析sql语句,找到影响效率的SQL

log-slow-queries=/var/lib/mysql/slow.log 这个路径对mysql用户具有可写权限

long_query_time=2 查询超过2秒钟的语句记录下来

上面的2 是查询的时间,即当一条SQL 执行时间超过5秒的时候才记录,/var/lib/mysql/slow.log 是日志记录的位置。

然后重新启动MySQL服务

对查询进行缓存

query_cache_size 使用多大内存来缓存查询语句[+8M]

mysql> show variables like'%query%'

query_cache_size=8M

[root@st mysql]# vim /etc/my.cnf

mysql> show status like '%Qcache%';

Qcache_free_blocks:说明缓存太大了。缓存中相邻内存的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。[+8M]

Qcache_free_memory缓存中的空闲内存

Qcache_hits每次查询在缓存中命中时就增大

Qcache_inserts每插入一个查询时就增大。命中次数除以插入次数就是命中率。

Qcache_lowmen_prunes缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间看;如果这个数字在不断增长就表示可能碎片非常严重,或者内存很少

Qcache_hits/Qcache_inserts 命中率

关键字缓冲区

mysql> show status like '%key%';

mysql> show variables like'key_buffer_size';

key_buffer_size 指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。[+8M]

key_read_requests 请求总数

key_reads 代表命中磁盘的请求个数

(key_read_requests-key_read)/key_read_requests:命中率

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。

临时表空间大小:order by和group by时把数据放到临时表里。

tmp_table_size 占的是内存的大小,如果太小在排序时会出错

created_tmp_tables 创建临时表的数量

max_tmp_tables=32

tmpdir=/tmp 硬盘上临时表所在的位置

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

innodb表:

创建表空间文件

[mysqld]

innodb_data_file_path=ibdata1:10M:autoextend

这个设置配置一个可扩展大小的尺寸为10MB的单独文件,名为ibdata1。没有给出文件的位置,所以默认的是在MySQL的数据目录内。

如果你对最后的数据文件指定autoextend选项。如果数据文件耗尽了表空间中的自由空间,InnoDB就扩展数据文件。扩展的幅度是每次8MB。

要为一个自动扩展数据文件指定最大尺寸,请使用max属性。下列配置允许ibdata1涨到极限的500MB:

[mysqld]

innodb_data_file_path=ibdata1:10M:autoextend:max:500M

InnoDB默认地在MySQL数据目录创建表空间文件。要明确指定一个位置,请使用innodb_data_home_dir选项。比如,要使用两个名为ibdata1和ibdata2的文件,但是要把他们创建到/ibdata,像如下一样配置InnoDB:

[mysqld]

innodb_data_home_dir = /ibdata

innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

mysql> show variables like 'innodb_buffer_pool_size';

innodb_buffer_pool_size

对于InnoDB表来说,innodb_buffer_pool_size的作用就相当于key_buffer_size对于MyISAM表的作用一样。InnoDB使用该参数指定大小的内存来缓冲数据和索引。对于单独的MySQL数据库服务器,最大可以把该值设置成物理内存的80%。

根据MySQL手册,对于2G内存的机器,推荐值是1G(50%)。

mysql> show variables like 'innodb_%per%';[建议打开]

innodb_file_per_table =1 为每一个表单独创建一个表空间文件。

其他参数

skip-locking

取消文件系统的外部锁,减少出错几率增强稳定性

skip-name-resolve

关闭mysql的dns反查功能。这样速度就快了!

选项就能禁用DNS解析,连接速度会快很多。不过,这样的话就不能在MySQL的授权表中使用主机名了而只能用ip格式。

wait_timeout=10 终止空闲时间超过10秒的链接,避免长连接[默认8个小时]

max_connect_errors=10 //10次连接失败就锁定,使用flush hosts 解锁,

或mysqladmin flush-hosts解锁

SQL语句调优:

explain命令:查询select。

.type

这列很重要,显示了连接使用了哪种类别,有无使用索引

从最好到最差的连接类型为const、eq_reg、ref、range、indexhe和ALL

本文摘自互联网

分享到:
评论

相关推荐

    MySQL优化思路.wmv

    MySQL优化思路.wmv

    《海量数据处理与大数据技术实战》、《MySQL技术大全:开发、优化与运维实战》作者 旨在分享各种编程语言、开发技术、分布式与微服

    MySQL优化思路 业务高峰期不小心拔掉了服务器电源!! 一文搞懂MySQL体系架构!! 关于MySQL日志,我与阿里P9都聊了些啥? 记一次MySQL崩溃修复案例,再也不用删库跑路了!! 如何最大程度防止人为误操作MySQL数据库...

    MySQL全面优化思路1

    9.MySQL的安全优化 1.硬件层优化 8.MySQL架构的优化 7.MySQL的事务及锁优化 6. MySQL的索引优化 4.MySQL三层结构及参数优化

    Mysql性能优化教程

    常见案例及优化思路 5 理解执行状态 7 常见关注重点 7 执行状态分析 8 分析流程 9 常见案例解析 11 总结 12 Mysql 运维优化 14 存储引擎类型 14 内存使用考量 14 性能与安全性考量 14 存储/写入压力优化 15 运维监控...

    MySQL数据库查询优化

    怎么利用语义优化的思路人工进行SQL语句的优化? 预计时间1小时 第9课 查询优化技术理论与MySQL实践(七)------非SPJ的优化 什么是非SPJ优化? 从理论看,GROUP BY、ORDER BY、LIMIT、DISTINCT等怎么被优化? ...

    MySQL优化笔记+资料.zip

    包含内容:MySQL入门到精通经典教程;MySQL优化讲义;MySQL优化笔记;SQL优化思路;索引学习;MySQL服务器调优思路;

    mysql查询优化.

    1、理解MYSQL的Query Optimizer 2、Query语句优化基本思路和原则 3、充分利用Explain 和 Profiling 4、合理设计并利用索引 5、order by、group by 和 DISTINCT优化 6、小结

    深入浅出Mysql优化性能提升.txt

    01-MySQL优化大的思路.wmv 02-Awk简洁入门.wmv 03-观察服务器周期性变化.wmv 04-观察MySQL进程状态.wmv 05-列选取原则.wmv 06-多列索引生效规则.wmv 07-多列索引实验.wmv 08-商城多列索引实验.wmv 09-聚簇索引概念....

    mysql如何进行优化入门篇

    【mysql优化专题】:本专题全文围绕mysql优化进行全方位讲解,本篇为优化入门篇,让大家知道为什么要优化,究竟在优化什么。喜欢的朋友可以关注收藏。 优化,一直是面试最常问的一个问题。因为从优化的角度,优化的...

    Mysql优化sql语句的思路浅谈

    如果突然交给你一个你完全不清楚的数据库让你进行优化,可能我们需要对sql语句进行优化,我们需要又怎么样的思路:  1.首先我们要了解一下次库是以写为主还是读为主:  通过show [session|global] status like '...

    数据库范式及MYSQL优化整体思路

    一、数据库范式  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定...

    MySQL优化笔记

    MySQL优化笔记,MySQL 5.5.35 常规思路 MySQL优化三大方向 1.优化MySQL所在服务器内核(此优化一般由运维人员完成)。 2. 对MySQL配置参数进行优化(my.cnf)此优化需要进行压力测试来进行参数调整。 3. 对SQL语句以及...

    MySQL数据库优化思路的细节分析(性能方向)

    本篇文章只是给大家提供一些优化方面的方向和思路,而具体业务场景的不同,使用的MySQL服务版本不同,都会使得优化方案的制定也不同。 首先开看优化可能带来的问题 优化不总是对一个单纯的环境进行,还很可能是一个...

    MySQL性能优化方向

    按照从大到小,从主要到次要的形式,分析 mysql 性能优化点,达到终优化的效果。  利用 mindmanger 整理了思路,形成如下图,每个点在网上都能找到说明,并记录下。形成了优化的思路:  1 连接 Connections ...

    MySQL性能调优与架构设计.pdf

    如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...

    MySQL查询优化.rar

    MySQL 查询优化 SQL诊断调优原则、原理及思路

    MySQL性能调优与架构设计.mobi

    如 MySQL Schema 设计的技巧,Query 语句的性能优化方式方法及MySQL Server中SQL层和存储引擎层的优化思路。同时还分析了 MySQL 数据库中主要存储引擎的锁定机制。架构设计篇则主要以设计一个高可用可扩展的分布式...

    关于MySQL 优化的100个的建议

    这里是100条调节和优化MySQL安装的技巧。一些技巧是针对特定的安装环境的,但这些思路是通用的。我已经把他们分成几类,来帮助你掌握更多MySQL的调节和优化技巧。  MySQL 服务器硬件和操作系统调节:  1. 拥有足够...

Global site tag (gtag.js) - Google Analytics