MySQL优化
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL优化相关的知识,希望对你有一定的参考价值。
SAS硬盘15000转/s,数据库内存64G或者32G,SATA硬盘转速7500转或10000转/s
企业一般是4块SSD做RAID10
mysql优化:二分配置的优化,八分sql语句的优化。
key_buffer_size:表示索引缓存的大小,mysql缓存在内存里的。内存的80%。MyIsam表的配置
table_cache:同时打开表的数
query_cache_size:查询缓冲区的大小
query_cache_type:表示查询缓冲区开启没,0关闭1开启
max_connecions:数据库最大连接数,1234千,为了防止请求太多把数据库搞挂了
sort_buffer_size:排序缓冲区的大小,这个值越大排序就越快
Innodb_buffer_pool_size:表示Innodb类型的表和索引的最大缓存,也配内存的80%
附一个真实环境MySQL配置my.cnf内容,可以根据实际情况修改:
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
user = mysql
server_id = 10
port = 3306
socket = /tmp/mysql.sock
datadir = /data/mysql/data1
old_passwords = 1
lower_case_table_names = 1
character-set-server = utf8
default-storage-engine = MYISAM
log-bin = bin.log
log-error = error.log
pid-file = mysql.pid
long_query_time = 2
slow_query_log
slow_query_log_file = slow.log
binlog_cache_size = 4M
binlog_format = mixed
max_binlog_cache_size = 16M
max_binlog_size = 1G
expire_logs_days = 30
ft_min_word_len = 4
back_log = 512
max_allowed_packet = 64M
max_connections = 4096
max_connect_errors = 100
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
sort_buffer_size = 2M
query_cache_size = 64M
table_open_cache = 10000
thread_cache_size = 256
max_heap_table_size = 64M
tmp_table_size = 64M
thread_stack = 192K
thread_concurrency = 24
local-infile = 0
skip-show-database
skip-name-resolve
skip-external-locking
connect_timeout = 600
interactive_timeout = 600
wait_timeout = 600
#*** MyISAM
key_buffer_size = 512M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 64M
myisam_max_sort_file_size = 1G
myisam_repair_threads = 1
concurrent_insert = 2
myisam_recover
#*** INNODB
innodb_buffer_pool_size = 16G
innodb_additional_mem_pool_size = 32M
innodb_data_file_path = ibdata1:1G;ibdata2:1G:autoextend
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 120
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_thread_concurrency = 16
innodb_open_files = 10000
#innodb_force_recovery = 4
#*** Replication Slave
read-only
#skip-slave-start
relay-log = relay.log
log-slave-updates
Mysql数据库索引及慢查询
1normal普通索引
2Unique不允许重复的索引,全文要只有这一个字段
3Full text全文搜索
建索引一般是DBA建
alter table class6 add index index_name(name);
alter table class6 add unique (name);
Alter table class6 add primary key (name);
或者使用create index index_name on table class6 (name);
删除索引
drop index (index_name) on table_name;
alter table class6 drop index (index_name);
索引都是DBA用
慢查询
查询时间超过10秒,该语句就被记录成慢查询,然后拿给DBA给他优化
>Show variables like “%slow%”;看慢查询状态,查询是否开启,秒数设定,日志开关,记录到的目录
开启>set global slow_query_log=on或者off;
配置文件里应该有这个设置,没有的话去配置文件里粘贴进去
log-slow-queries=/data/mysql/var/slow.log #日志目录。
long_query_time=0.1 # 记录下查询时间查过0.1秒。
log-queries-not-using-indexes # 表示记录下没有使用索引的查询。
慢查询特别重要,企业里查询时间超过0.1s记录出来
mysqldumpslow -s r -t 1 /var/run/mysqld下的slow文件
Vim slow.log 把那里面的文件给DBA就行了,他会去优化
show processlist;看目前进程任务
mysqladmin -uroot -p password newpassword 在外面改密码
grep -r "192.168" * 过滤所有文件里的字节
以上是关于MySQL优化的主要内容,如果未能解决你的问题,请参考以下文章