Mysql優化 究極終章

2021-08-08 21:03:42 字數 1028 閱讀 6759

我們的sql和索引的優化大概就這麼多,然後我們再來看一下表結構的優化是怎麼樣的。

首先我們需要選擇最合適的資料型別,那麼什麼叫合適呢?主要有4點:

第一,可以存在我們字段資料的最小的資料型別。

第二,如果可以使用int代替varchar等資料型別,最好用int,因為int的處理比varchar等資料型別的處理簡單。(兩個例子,乙個是儲存時間,乙個是儲存ip)

第三,盡可能的使用not null定義字段。

第四,在儲存一些文章或者篇幅 比較大的字段時,我們盡量避免使用text,如果必須要使用,要考慮到分表的操作。

然後我們再來講一下表的垂直拆分和水平拆分。

所謂的表的垂直拆分就是把乙個有很多列的表拆分成乙個多列的表,解決的是表的寬度,那麼這裡就會有一定的技巧,比如:

1、我們把一些常用的字段放在一張表中。

2、我們把一些不常用的字段放在一張表中。

3、我們把一些大資料的字段放在一張表中。

水平拆分呢,就是為了解決乙個表中資料量過大的問題,我們水平的把乙個表分為多個表,表的資料結構沒有變化。

還有就是作業系統的配置優化:

一般就是增加tcp的連線數,以及減少連線時資源**,再有就是開啟對檔案數的限制,再有就是最好關閉防火牆之類的軟體,因為這種東西會對我們的系統效能產生損耗。

我們可以使用第三方的工具幫我們進行配置,介紹一款percona公司的配置工具

person configuration wizard **:選擇方式然後填寫資訊網域名稱等,就會幫你生成乙個配置檔案。當然具體的配置還是要根據實際情況,不能完全以工具的配置檔案為準。

再有的就是我們的硬體優化,大家都知道,硬體的優化,需要消耗大量的成本,我們這裡需要注意並不是伺服器的cpu核數越多越好的,有實驗測試得,mysql5.5的版本,在32核的伺服器下,反而效能降低。

我們可以通過增加磁碟陣列的方式優化我們的磁碟io一般就是raid0,raid1,raid5,raid0就是把多個磁碟連線成一塊硬碟使用,這樣的方式io最好。我們一般的資料庫都建議採取raid1+0的方式來進行配置。

分享一首我最愛的民謠沒有之一。

《高效能MySQL》第6章 查詢效能優化

6.2 慢查詢基礎 優化資料訪問 6.2.1 是否向資料庫請求了不需要的資料 有些查詢會請求超過實際需要的資料,然後這些多餘的資料會被應用程式丟棄。這會給mysql伺服器帶來額外的負擔,並增加網路開銷,另外也會消耗應用伺服器的cpu和記憶體資源。6.2.2 mysql是否在掃瞄額外的記錄6.3 重構...

深入淺出mysql筆記 18章SQL優化

一 定位執行慢的sql語句 1 通過查詢慢日誌定位執行效率低的sql語句。2 通過show processlist 命令檢視 3 通過explan 分析低效語句 type all 全表,index 索引全掃瞄,range 索引範圍掃瞄,ref 非唯一索引或者唯一索引的字首掃瞄返回匹配某個單獨值記錄,...

《高效能MySQL》第6章查詢效能優化(4)

mysql通過建立並填充臨時表的方式來執行union,因此很多優化無法在union查詢中很好應用。所以需要手動將where limit order by等語句下推到union子查詢中。如果不是需要對結果去重,請使用union all。即使有all,mysql也會將結果先存於臨時表中,再讀出,這很多時...