讀高效能Mysql摘要

來源:互聯網
上載者:User

標籤:轉換   工具   ascii碼   更新   比較   har   定製   時區   好的   

類型相關

INT(1)和INT(20)對於儲存和計算來說,意義是相同的,他不會限制值的合法範圍,只是一些互動工具會用來顯示字元的個數
預設是有符號的,可以指定為無符號,增加資料存放區範圍,如0-255,可以聲明unsigned
整數比字元操作代價更低,因為字元集和校對規則使字元更複雜,如果是ip,也應該用整型儲存
盡量避免NULL:如果查詢中包含可能為null的列,對Mysql來說更難最佳化。它使索引、索引統計和值都比較複雜,可為NULL的列會使用更多的儲存空間,當為Null的列表被索引時,每個索引記錄需要一個額外的位元組,盡量不為NULL列建索引【InnoDB例外,它使用單獨的bit儲存NULL值,對於很多值為NULL,少數非NULL有很好的空間效率】

varchar(1000)和char 1000的意思是位元組,而不是字元
char適合儲存定長的值,它佔用的儲存空間固定
varchar適合儲存可變長的值,由於值的長度可變,所以儲存的空間不確定,當一個記憶體頁無法容納完varchar資料佔用的空間時,innodb會分裂成兩頁
varchar適合:列的更新少,使用了複雜的字元集,每個字元使用不同的位元組數儲存時

BLOB、TEXT:
值太大時,Innodb會分配額外的儲存地區,每個值在行內需要1到4個位元組儲存一個指標
Blob儲存的位元據,沒有定序和字元集

TIMESTAMP只能儲存1970年到2038年,顯示的值依賴當前的時區
Datetime從1001年到9999年,類似字串,因此和時區不轉換

字元集相關

字元集:
unicdoe一個字元統一用2個位元組來標識,不管是漢字還是英文字母,還是符號,因此空間會有浪費
utf-8是一種變長的編碼方式,使用1-4個位元組,當字元在ascii碼範圍,就用一個位元組標識,一個中文字元佔3個位元組
utf-8是廣義的unicode字元集的實現方案,他已經儘力節省了空間,但GBK這種字元集還在大行其道,因為GBK是為中文量身定製的,他的空間更少,只是只支援中文,其他文字如韓文,會亂碼,因此特定情境下還是有優勢的

最佳化操作

從行緩衝中將編碼過的列轉換成行資料結構的操作代價是很高的,所以,用什麼欄位,取什麼欄位

粗略的經驗法則:單個查詢關聯的表在12個表以內

大表的alter table可能會很慢,Mysql執行大部分修改表結構操作的方法是用新的結構建立一張表,從舊錶中插入所有資料,刪除舊錶,如果伺服器記憶體不足,有很大可能會持續幾個小時

聚簇索引

聚簇索引指的是資料行存放在索引的葉子頁中,一個表只能有一個聚簇索引
如果一個索引包含了所有需要用到的值,就叫覆蓋索引,對於innodb,可以避免對主鍵索引的二次查詢,效率很高

mysql分區表

分區表並沒有一個全域索引,索引只是在各個底層表上各自加上完全相同的索引,並且操作對程式是暗箱的,有一定風險

讀高效能Mysql摘要

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.