硬件資源(CPU 、內存、磁盤等)
操作系統的區別
MySQL的存儲引擎的選擇
MyISAM: 不支持事務,表級鎖
InnoDB: 事務級存儲引擎,完美支持行級鎖,事務ACID特性。
但 比不是說 MyISAM比InnoDB差,看使用場景
數據庫參數設置
數據庫結構設計和SQL語句 ,毫無疑問 這個是最最重要的因素 —> mysql 可以開啓慢查詢監控耗時長的SQL
更多的CPU or 更快的CPU ?
主要從以下幾個方面考慮:
分析下我們的應用的類型,是的話,要提高SQL的運行效率,那就需要更快的CPU。
還有一點需要注意 MySQL不支持多CPU對同一SQL的併發處理,也就是說一個SQL只能運行在一個CPU的核上。
一個SQL只能跑在一個CPU上,如果有32個CPU呢 ,是不是同時可以跑32個SQL呢? 就是我們前面說的QPS 。 一般web應用,CPU的核心數量比CPU的主頻更重要。
5.6、 5.7以上的版本,對多核CPU的支持更好。
32的操作系統,進程所能尋址的最大內存也就4G。
總結
MyISAM : 索引 緩存在內存 ,數據通過OS來緩存
InnoDB : 索引和數據都是通過內存來緩存
舉個例子, 100G的數據量, 內存64G,這個時候增加內存對性能有提高。 如果內存是256G,還是慢,那就是其他問題了。
當然了,內存多了,對於數據的讀和寫都是好處的,都可以利用緩存來提高讀寫性能。
如何選擇內存呢? ----> 建議選擇主板支持的最大內存頻率, 跟CPU一個道理。
內存的型號,保持一致, 單個內存儘可能的大,都是比較好的選擇。
配置的時候,要考慮數據的增長,比如100G的數據, 128G內存可能已經滿足了要求,但數據可能增長較快,這個時候256的更佳。
總結
主流的4種
傳統的機械硬盤的讀取數據的過程
考慮的話 1. 存儲容量 2.傳輸速度 3 訪問時間 4 主軸的轉速(常見的7200轉、1萬5千轉等等) 5. 物理尺寸
RAID : 磁盤冗餘隊列 (Redundant Arrays of Independent Disks )
RAID是一種將多個容量較小的磁盤組成一組容量更大的磁盤,並提供數據冗餘來保證數據完整性的技術 。
Linux-Raid0、Raid1、Raid5、Raid10初探
SSD
特點:
舉個例子 SATA3.0接口 6Gbps , 放到SATA2.0接口上 最多隻能用到2.0的 3Gbps
PCIe 卡(Fushion IO)
固態存儲使用的場景
舉個例子
主從節點的MYSQL, 有一個SSD, 給哪個節點用呢 ?
----> 從節點 上用。 主節點上寫 ,是多線程, 從節點的複製,單線程,爲了減少延遲,建議放到從服務器上。
SAN: Storage Area Network
NAS: Network Attached Storage
是兩種外部文件存儲設備加載到服務器上的方法。
SAN設備通過光纖連接服務器,設備通過塊接口訪問,服務器可以將其當做硬盤使用。 可以承受大量的順序讀寫,但隨即讀有的時候不如RAID
NAS 使用 寬帶來傳輸,有延遲。
使用場景的話: 數據備份等 。
總結
網絡帶寬 —> 低延時 、吞吐量達
網絡質量—> 少抖動
建議
windows 和 linux , 大小寫的區別,可以通過修改MySQL的配置來調整。
CentoOS系統的參數優化 /etc/sysctl.conf
資源限制的配置文件 /etc/security/limit.conf
這倆參數,重啓系統才生效。