11、單機運行環境搭建之 --Centos6.4下mysql5.6.10的性能優化


測試配置腳本時使用如下命令:

rm -rf  /var/log/mysqld.log

/usr/local/mysql/bin/mysqld_safe --log-error=/var/log/mysqld.log

vi /var/log/mysqld.log

然后查看 /var/log/mysqld.log就能看出來為什么mysql沒有正常啟動了。

 

 

vi /etc/my.cnf

在[mysqld]配置節下添加:

[mysqld]

#myslqd服務運行時的端口號
port=3306

#socket文件是在Linux環境下特有的,用戶的客戶端軟件連接可以不通過TCP/IP網絡而直接使用unix socket連接到Mysql。
socket=/tmp/mysql.sock

#避免Mysql的外部鎖定,減少出錯幾率,增強穩定性。
skip-external-locking

#禁止MySql對外部連接進行DNS解析,使用這一選項可以消除MySQL進行NDS解析的時間。但需要注意的是:如果開啟該選項,則所有遠程主機連
接授權都要使用IP地址方式了,否則MYSQL將無法正常處理連接請求。
skip-name-resolve

#back_log參數的值指出在MySQL暫時停止響應新請求之前,短時間內的多少個請求可以被存在對堆棧中,如果系統短時間內有很多連接,則需>要增大該參數的值,該參數值指定到來的TCP/IP連接的監聽隊列的大小。不同的操作系統在這個隊列的大小有自己的限制,如果試圖將back_log設定得高於操作系統的限制將是無效的,其默認值為50,對於LINUX系統而言,推薦設置為小於512的整數。
back_log=384

#索引緩沖區大小,增加它可得到更好的索引處理性能,對於內存在4GB左右的服務器,該參數可設置為256M或384M。如果該參數值設置的過大>反而會使服務器的整體效率降低。
key_buffer_size=384M

#設定在網絡傳輸中一次消息傳輸量的最大值,系統默認值為1MB,最大值是1GB,必須設定為1024的倍數,單位為字節。
max_allowed_packet=4M

#設置MySQL每個線程的堆棧大小,默認值足夠大,可滿足普通操作。可設置范圍為128KB至4GB,默認192K。
thread_stack=256k


#設定查詢排序時所能使用的緩沖區大小,系統默認大小為2MB,從5.1.23版本開始,在除了WINDOWS 之外的64位平台上可以4GB的限制。該參數
對應的分配內在是每個連接獨占的,如果有100個連接,那么實際分配的總排序緩沖區大小為100*6=600MB,那么對於內存4GB左右的服務器來>說,推薦將其設置為6MB-8MB。
sort_buffer_size=6M

#讀查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內在也是每個連接獨享。
read_buffer_size=4M


#設置Thread Cache池中可以緩存的連接池線程最大數量,可設置為0-16384,默認為0。1GB內存我們配置為8,2GB內存我們配置為16,4GB或4GB以上內在我們配置為64。
thread_cache_size=64
#指定Mysql查詢緩沖區的大小,可以通過在Mysql控制台觀察,如果Qcache_lowmem_prunes的值非常大,則表明經常出現緩沖不夠的情況,如果
Qcache_hits的值非常大,則表明查詢緩沖使用的非常頻繁
query_cache_size=64M

#設置內在臨時表最大值,如果超過該值,則會將臨時表寫入磁盤,其范圍為1KB至4GB。
tmp_table_size=256M

#指定MYSQL允許的最大連接進程數,如果在訪問程序時經常出現TOO MANY CONNECTIONS的錯誤提示,則需要增大該參數值。
max_connections=5000


#指定一個請求的最大連接時間,對於4GB左右內在的服務器來說,可以將其設置為5-10
wait_timeout=120

#該參數取值為服務器邏輯CPU數量*2,比如,服務器有兩個物理CPU,每個物理CPU支持HT超線程,所以實際取值4*2=8,這也是目前雙四核主流
服務器的配置。
thread_concurrency=8

#開啟該選項可以徹底關閉MYSQL的TCP/IP連接方式,如果WEB服務器是以遠程連接的方式訪問MYSQL的數據庫服務器,則不要開啟該選項,否則>將無法正常連接。
skip-networking


innodb_flush_log_at_trx_commit
#抱怨Innodb比MyISAM慢 100倍?那么你大概是忘了調整這個值。默認值1的意思是每一次事務提交或事務外的指令都需要把日志寫入(flush)
硬盤,這是很費時的。特別是使用電池供電緩存(Battery backed up cache)時。設成2對於很多運用,特別是從MyISAM表轉過來的是可以的>,它的意思是不寫入硬盤而是寫入系統緩存。日志仍然會每秒flush到硬 盤,所以你一般不會丟失超過1-2秒的更新。設成0會更快一點,但安>全方面比較差,即使MySQL掛了也可能會丟失事務的數據。而值2只會在整個操作系統 掛了時才可能丟數據。
innodb_flush_log_at_trx_commit=2

#這是 InnoDB 存儲引擎的事務日志所使用的緩沖區。類似於 Binlog Buffer,InnoDB 在寫事務日志的時候,為了提高性能,也是先將信息寫>入 Innofb Log Buffer 中,當滿足 innodb_flush_log_trx_commit 參數所設置的相應條件(或者日志緩沖區寫滿)之后,才會將日志寫到文>件(或者同步到磁盤)中。可以通過 innodb_log_buffer_size 參數設置其可以使用的最大內存空間。
innodb_log_buffer_size=2M

#這個數字要根據實際的情況來設定,但對於大多數的情況,是一個比較合適的設置
innodb_thread_concurrency=8

#tmp_table_size 的默認大小是 32M。如果一張臨時表超出該大小,MySQL產生一個 The table tbl_name is full 形式的錯誤,如果你做很多
高級 GROUP BY 查詢,增加 tmp_table_size 值。
tmp_table_size=64M

#隨機讀取數據緩沖區使用內存(read_rnd_buffer_size):和順序讀取相對應,當 MySQL 進行非順序讀取(隨機讀取)數據塊的時候,會利用>這個緩沖區暫存讀取的數據。如根據索引信息讀取表數據,根據排序后的結果集與表進行Join等等。總的來說,就是當數據塊的讀取需要滿足>一定的順序的情況下,MySQL 就需要產生隨機讀取,進而使用到 read_rnd_buffer_size 參數所設置的內存緩沖區。
read_rnd_buffer_size=16M

#你最好在定義數據庫命名規則的時候就全部采用小寫字母加下划線的組合,而不使用任何的大寫字母。
lower_case_table_names=1

#設置校驗模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


#默認配置沒開查詢緩存哦親
explicit_defaults_for_timestamp

功能:

#關閉MYSQL日志

執行:
/usr/local/mysql/bin/mysql -u root -p
輸入密碼,登陸到mysql,然后執行
reset master;
退出后執行:
vi /etc/my.cnf
查找
log-bin=mysql-bin binlog_format=mixed
再這兩行前面加上#,將其注釋掉,再執行重啟mysql命令
這樣就關閉了mysql日志了
/etc/init.d/mysql restart

 MySql 的批量操作,要加rewriteBatchedStatements參數

http://elf8848.iteye.com/blog/770032

MySql 插入(insert)性能測試

http://elf8848.iteye.com/blog/1547398

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM