數據庫性能的查看:
Show proceelist 查看數據庫連接的狀態和連接的總數
show globalstatus like 'Max_used_connections'; 查看數據庫最大的響應連接,最大連接數在10%以下的mysql的連接數偏高
Show processlist 查看連接數狀態
showglobal status like 'Thread%';查看進程使用情況
show globalstatus like 'qcache%'; 查看緩存的使用情況
show statuslike ‘key_read%’ 比例key_reads/key_read_requests應該儘可能的低,至少是1:100或者是1:1000
show statuslike “open%” 查看打開的數據庫的表
目前生產線上的數據庫普遍佔用內存很大,主要的原因是因爲數據庫配置文件相關參數配置不當的原因,導致讀取的緩存空間很大:
相關的參數可以參考一下的配置:
數據庫的配置的一些重要參數:
[mysqld]
Skip-external-locking //跳過外部鎖定,用於多進程下的myisam的數據表進行鎖定
Key_buffer_size=384M//指定索引的緩衝區大小,4G內存的索引一般爲384M或者512M,對於該值得配置一般使用查看狀態值key_read_request來查看是否配置合理,比例在1:100和1:1000左右。
table_open_cache =2048 //mysql打開數據庫表的時候都會讀取一些數據到table_open_cachede中,當mysql在這個數據庫中找不到數據的時候纔會去數據庫讀取,可以減少文件的打開關閉次數,配置是否合理,對於該數的配置的一般查看打開的表的數量。使用show global status like ‘open%_tables’查看打開表的數量在進行設置,一般建議爲open_tables/opened_tables>=0.85左右。
read_buffer_size= 2M //讀查詢用到的緩存區的大小,這個參數只用於myisam表有效
read_rnd_buffer_size= 8M //對所有的存儲引擎都有限
myisam_sort_buffer_size= 64M // 重建索引的最大文件的大小
thread_concurrency= 4 //這個值得大小一般是cpu的核數的雙倍,這個值屬於重要配置對象5.5以上版本該值無效
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc_messages_dir = /usr/share/mysql
lc_messages = en_US
skip-name-resolve
lower_case_table_names // #忽略表名大小寫
connect_timeout = 15 //默認就好
wait_timeout = 600 //默認就好
max_allowed_packet = 16M //默認爲16M,但遇到大字段提示信息包過大的問題的時候再修改,一般增加爲32M
thread_cache_size = 128 //緩存中保存線程的數量,8G的內存一般設置爲64或者128左右,3G爲32,2G的爲16
sort_buffer_size = 8M //排序緩衝 100連接的時候會消耗0.8G的內存
bulk_insert_buffer_size = 16M //批量插入的緩存 默認爲8M
tmp_table_size = 256 M //默認爲32M
max_heap_table_size = 256M
query_cache_limit = 0 #不使用數據緩存,有需要一般使用memcache外部緩存,默認爲1M
query_cache_size = 0 #一般用於mysqlisam的優化,建議關閉該功能
log_bin = /var/log/mysql/mariadb-bin //注意log-bin存放的空間大小
log_bin_index = /var/log/mysql/mariadb-bin.index
expire_logs_days = 10 //存放log-bin的時間週期
max_binlog_size = 100M //最大的binlog大小,不用設置也可以
innodb_buffer_pool_size = 16384M //一般配置爲系統內存的50%-80%
innodb_log_buffer_size = 32M //確定日記文件所用的內存
innodb_file_per_table = 1
innodb_open_files = 400
innodb_io_capacity = 400
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M //確定數據文件的大小,大的設置可以提高性能但是也會增加恢復故障數據庫的所需要的時間
在innode的配置中比較重要的兩個參數是innodb_buffer_pool_size和innodb_log_file_size
在mysql的官方文檔中一般建議把innodb_buffer_pool_sixe配置爲內存的50%到80%左右
show status like 'Innodb_buffer_pool_%'; 查看innode的性能
[mysqldump]
quick //在導出巨大的表的時候需要開啓、一般20G以後備份的就不要使用mydqldump的形式