系统优化怎么做-数据库优化
前言
目前大部分公司的數據庫都是MySQL,雖然現在NoSQL數據庫比如mongo, hbase越來越流行了,但傳統的MySQL依然是業界用得最多。本文是以MySQL為例。
數據庫
數據庫是唯一在應用系統中的單點資源,對于數據庫的資源的使用要特別小心。有如下幾點注意點
硬件
MySQL每秒鐘都在進行大量、復雜的查詢操作,對磁盤的讀寫量可想而知。所以,通常認為磁盤I/O是制約MySQL性能的最大因素之一,推薦使用RAID-0+1磁盤陣列。
推薦使用至少4U以上的服務器來專門做數據庫服務器,基本上是越多越好
服務器內存建議不要小于4GB。基本上是越大越好
系統配置
MySQL配置在my.conf,影響新能的幾個關鍵配置屬性
- 使用INNODB存儲引擎 5.5以后的默認引擘,支持事務,行級鎖,更好的恢復性,高并發下性能更好,對多核,大內存,ssd等硬件支持更好。
- 表字符集使用utf8mb4 使用utf8mb4字符集,如果是漢字,占3個字節,但ASCII碼字符還是1個字節;統一,不會有轉換產生亂碼風險,并能解決符號表情亂碼問題;
- max_connections 最大連接(用戶)數
- innodb_log_file_size 在高寫入負載尤其是大數據集的情況下很重要。這個值越大則性能相對越高,但是要注意到可能會增加恢復時間。設置為 64-512MB,根據服務器大小而異
- Innodb_buffer_pool_pages_data 分配出去, 正在被使用頁的數量
- Innodb_buffer_pool_pages_total 緩沖區總共的頁面數
- Innodb_page_size 編譯的InnoDB頁大小(默認16KB)
調優參考計算方法:
val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%
val > 95% 則考慮增大 innodb_buffer_pool_size, 建議使用物理內存的75%
val < 95% 則考慮減小 innodb_buffer_pool_size, 建議設置為:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (102410241024)
查看數據庫配置及狀態
查詢innodb配置
show global variables where variable_name like ‘%innodb%’
查詢線程Cache配置
show variables like ‘thread_cache_size’;
查詢連接配置
show variables like ‘%connect%’;
查詢當前狀態
status
show global status like ‘Thread%’;
數據庫表結構
表結構的設計目標除了滿足業務以外,盡量減少代碼實現上的聯表查詢操作,因此在設計上可以適當有一些冗余字段的設計,減少數據庫IO次數。
現在很流行的ElasticSearch等大數據存儲寬表的概念也是這種思想的體現
索引設計
索引是一把雙刃劍,它可以提高查詢效率但也會降低插入和更新的速度并占用磁盤空間。
字段設計
總結
以上是生活随笔為你收集整理的系统优化怎么做-数据库优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统优化怎么做-新系统上线前做什么
- 下一篇: 系统优化怎么做-SQL优化