mysql调优

2年前 (2016-10-17) admin mysql高可用 0评论 已收录 605℃
mysql调优

clint---> httpd---> php --->mysql

解压缩: tar fzxv mysqlreport-3.5.tgz (汇报工具,通过这个工具可以观察到一些数据)
	cd mysqlreport-3.5
	cp mysqlreport /usr/bin
	mysqlreport  --user root --password 123 (有用户名和密码的前提下)
	#yum serach  DBI -y
	#yum install perl-DBD-MySQL -y
       	mysqlreport --outfile /tmp/mysql 写入到文件中
	vim /tmp/mysql
Myisam引擎
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Key---->Mysam引擎的索引
	Read hit ---->命中率(越高代表着效率很高)
	调整key_buffer 
	方法1:
	show variables like '%key%';
	set global key_buffer_size=16777216;
	方法2:必须要重新启动服务
	vim /etc/my.cnf
	key_buffer_size=16777216
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Qusetion
		Total 分类
		DMS        由增、删、改、查、替换
		
		Slow 10 s  当你的工作在10S内没有完成,即作慢查询
		vim /etc/my.cnf
		log-slow-queries=/tmp/slow.log 慢速日志存放的位置
 		long-query-time=20	      超出多长时间算作慢速查询
		注:如果没有必要去定位slow,就不需要开启,因为开启会增加IO

		Qc Hits    查询缓存 
		调整Query Cache
		show variables like '%query%';
		set global query_cache_size=8384512;
		mysqlreport
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	SELECT and Sort 
	  	Sort 用来作排序的内存多大,他对应的是每一个线程
		mysql是以线程方式工作的,这个数值设置大了,可以增加排序的效率
		show variables like '%sort%';
		set global sort_buffer_size='2097144';
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Table locks
		Waited  这个数值越小越好
		show full processlist;
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Tables	增快表访问的速度
		open 	当前打开了多少表
		opend 	一共打开了多少表
		show variables like '%table%';
		table_cache
		set global table_cache=128; 把表的文件描述符写入到内存中了
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Connections
		Max used  最大连接数
		show variables like '%max%';
		set global max_connections=100;
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Created Temp	创建临时表(排序、索引)
		show variables like '%tmp%';
		tmpdir	/tmp/  临时表创建的位置
		tmp_table_size 如果创建临时表的大小超过32M将会把数据写入到磁盘中
		Disk table 值变大的时候
		解决方法:1、增大临时表的大小 2、优化查询语句
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Threads	线程缓存,减少从需要到产生的时间
		show variables like '%thread%';
		thread_cache_size
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	Bytes	和网络相关的
		Sent		发送的流量
		Recevied	接收的流量
		单位是:B

InnoDB引擎  
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
	InnoDB Buffer Pool 
	Usage	越大越好
	show variables like '%innodb%';
	set global innodb_buffer_pool_size=8388608;
	注:建议大小设置为整个内存的80%
	Pages	单位:16K
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
InnoDB与网络
	back_log 请求队列中能够排队的大小,如果增大并发数,则这个数必须要调大
	tcp.max_syn_backlog
	somaxconn

	一次消息传输量的最大值
	show variables like '%max_allowed_packet%';
	default 1M

	show variables like '%timeout%';
	connect_timeout     连线时的超时时间

	interactive_timeout 处于回会话空闲的timeout,连接上来什么都不执行的超时时间
	wait_timeout 

	net_read_timeout
	net_write_timeout  处于数据交互阶段超时时间 
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Innodb与IO相关的
	show variables like '%innodb_flush_log%';
	innodb_flush_log_at_trx_commit
	0 最不安全,但是效率是最高,每隔一秒钟会把数据写入到硬盘上,如果断电或者数据库服务坏了,数据就丢失了
	1 最安全,数据会时时的写到硬盘上
	2 先写到操作系统的内存中,再写入到磁盘中,mysql进程死了,数据不丢,但是断电了,数据就丢失了
	
	绕过操作系统的缓存,直接将数据写入到磁盘中,好处是节省了内存
	vim /etc/my.cnf
	innodb_flush_medthod=O_DIRECT
	/etc/init.d/mysqld restart
	\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
InnoDB与cpu
	主频高
	核心
	taskset 绑定



select table_schema as 'DBname',
 sum(data_length + index_length) / 1024/ 1024  as 'DB size(MB)', 
sum(data_free) /1024/1024  as 'free space (MB)' from information_schema.tables group by table_schema;

博主

让学习成为习惯,坚持-共享-开源-自由! 成功者决不放弃,放弃者绝不成功!

相关推荐

嗨、骚年、快来消灭0回复。