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优化的主要内容,如果未能解决你的问题,请参考以下文章

mysql 优化包括哪些内容?

Mysql的性能优化

Mysql的性能优化

mysql 子查询 优化

MySQL Optimization

MySQL优化MySQL 高并发配置优化基础知识