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" * 過濾所有文件裏的字節



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章