Mysql升級及配置優化

mysql 5.6升級到5.7

  1. Mysql官網下載最新5.7社區版,mysql-5.7.26-win32.zip
  2. 下載解壓後的文件:

  1. 添加配置文件my.ini,主要是數據庫配置、參數設置(端口號、字符集、緩衝區大小等),參數配置會影響到mysql讀寫性能,優化性能後面具體分析

[mysqld]下配置explicit_defaults_for_timestamp=true,這是相對於5.6需要添加的一個配置,具體參考https://www.jianshu.com/p/d7d364745173

 

兩個bat文件主要爲了方便mysql的安裝和卸載

不指定(註釋)basedir和datadir,mysql默認初始化data在當前目錄,方便後續mysql的打包安裝。

 

4.接下來以管理員權限打開cmd, 執行mysqld –initialize,進行mysql初始化,生成data目錄

5. 修改密碼:

設置my.ini ,添加一行 skip-grant-tables,執行installdb.bat啓動服務

進入mysql客戶端:

mysql -uroot  -P6706

use mysql

修改密碼:

update user set authentication_string=password('hydee_pos_sys') where user='root';

把password_expired 改爲不過期:

update user set password_expired='N' where user='root';

刪除,skip-grant-tables,重啓服務, 然後用用戶名密碼連接mysql,添加一個賬戶,給與最高權限

 

Mysql5.7瘦身 從1.7G到330M

 

刪除文件夾中的lib 文件夾裏的內容是給你重新編譯MySQL軟件使用的,一般使用不到。

運行時佔用優化:table_definition_cache : 1400=>400

table_open_cache:2048=>256,調整後運行內存佔用160M左右

 

Mysql配置優化

 

調試sql:

SELECT cg.cg_code

FROM ware_cg_base_info cg

INNER JOIN ware_cp_base_info cp

ON cg.ware_inside_code = cp.ware_inside_code

and cp.cg_code = cg.cg_code

LEFT JOIN t_ware_factory wf ON wf.factoryid = cg.factory_id

WHERE cg.cg_code = 100 and cp.cp_code = 10002;

my.ini配置:

innodb_buffer_pool_size : innodb表影響最大性能的參數,可以緩存數據塊和索引鍵,適當增加這個參數,可以有效減少innodb表的磁盤I/O,因爲InnoDB會把儘可能多的數據和索引緩存在緩衝區,這個類似與Oracle的Buffer Pool:如果只採用InnoDB,可以把這個參數調大一點,大約內存的70%左右。  根據實際剩餘內存調整

 

innodb_thread_concurrency=9   

innodb_thread_concurrency默認是0,則表示沒有併發線程數限制,所有請求都會直接請求線程執行。注意:當 innodb_thread_concurrency 設置爲0時,則innodb_thread_sleep_delay的設置將會被忽略,不起作用。如果數據庫沒出現性能問題時,使用默認值即可。

 

tmp_table_size=60M     默認爲 16M

-內部(內存中)臨時表的最大大小 

-如果一個表增長到比此值更大,將會自動轉換爲基於磁盤的表. 

-此限制是針對單個表的,而不是總和. 

innodb_log_buffer_size=5M      默認爲8M  默認的設置在中等強度的寫入負載及短事物處理時,性能還可以。但是存在大量更新操作或者負載較大時,就要慢慢增加這個參數的值了。不過不要設置太大,會浪費內存。它每秒都會刷新一次,所以不用設置超過1s所需的內存空間,16M足夠了。

query_cache_size=0     默認1MB

-查詢緩衝常被用來緩衝 SELECT 的結果並且在下一次同樣查詢的時候不再執行直接返回結果. 

-打開查詢緩衝可以極大的提高服務器速度, 如果你有大量的相同的查詢並且很少修改表. 

-查看 “Qcache_lowmem_prunes” 狀態變量來檢查是否當前值對於你的負載來說是否足夠高. 

-注意: 在你表經常變化的情況下或者如果你的查詢原文每次都不同, 

-查詢緩衝也許引起性能下降而不是性能提升. 

 

由於採用Innodb引擎,去掉myisam配置:

myisam_max_sort_file_size=100G

myisam_sort_buffer_size=79M  

key_buffer_size

 

優化前配置:查詢耗時 mysql 5.6 查詢耗時2s左右,佔用400M左右

innodb_log_buffer_size=1M 

innodb_thread_concurrency=9

key_buffer_size=8M

tmp_table_size=44M

read_buffer_size=4M

read_rnd_buffer_size=64k

sort_buffer_size=256k

thread_cache_size=10

query_cache_size=0

優化後配置mysql 5.6 , 查詢耗時2s左右  5.7查詢耗時0.1-0.2s,佔用160M左右

innodb_log_buffer_size=2M 默認爲1M

innodb_thread_concurrency=8 你的服務器CPU有幾個就設置爲幾,建議用默認一般爲8

key_buffer_size=256M 默認爲218 調到128最佳

tmp_table_size=64M 默認爲16M 調到64-256最掛

read_buffer_size=4M 默認爲64K

read_rnd_buffer_size=16M 默認爲256K

sort_buffer_size=32M 默認爲256K

thread_cache_size=120 默認爲60

query_cache_size=0

 

總結

1.經測試,mysql 5.7比之5.6在查詢性能, 運行時佔用,機器適配上有較好提升,在性能差的機器上,5.7比5.6有更好的性能

2.mysql優化除sql使用正確索引、分庫分表外、讀寫分離等之外,根據服務器性能合理配置mysql參數也能發揮mysql更好性能

 

參考文檔:

https://www.jb51.net/article/19464.htm

https://blog.csdn.net/nightelve/article/details/17393631

 

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