mysql 之 schema與資料型別優化

2021-09-02 21:34:57 字數 1264 閱讀 2373

一.選擇優化的資料型別

1.更小的通常更好:如果只要儲存1~200,tinyint unsigned更好.因為占用更小的記憶體和磁碟空間.

2.簡單就好: 簡單資料型別需要更小的cpu時間週期.例如:整型比字元操作代價更低(字符集的問題).使用mysql自帶型別取代字串(date,datetime),使用整型儲存ip.

3.盡量避免null:單列索引無法儲null值,復合索引無法儲全為null的值.innodb使用單獨的位(bit)儲存null值,所以對於稀疏結構(列中大部分都是null)有很好的空間效率.(不適用myisam).

4.mysql資料型別可以儲存相同型別的資料,只是儲存的長度和範圍不一樣,允許的精度不同,需要的空間不同.

例如:datetime和timestamp可以儲存相同型別的資料,然而timestamp只占用一半的空間.但是它有乙個時間範圍.

1.1 整數型別      

整數可以使用: tinyint,smallint,mediumint,int,bigint.分別使用8,12,16,24,32,64位儲存空間.儲存範圍是-2的n-1次方到2的n-1次方.

1.2 實數型別

decimal可以儲存比bigint更大的整數.(最多允許65個數字)

1.3 字串型別

varchar

比定長的更省空間,如果設定了row_format=fixed 就不起作用.varchar需要額外乙個或兩個位元組記錄字串長度.

下列情況使用varchar是合適的: 字串列的最大長度比平均長度大很多; 列的更新很少;使用 utf8這樣的字符集,每個字元使用不同位元組數儲存。

char

char型別是定長的:char會刪除資料末尾的所有空格.

enum

使用列舉代替字元型別.

select e + 0 from test 結果會是數字

二.加快alter table速度

alter table modify column ....   會拷貝整張表到另一張表

alter table alter column...   只修改.frm檔案而不涉及表資料,這個操作很快

三.快速建立myisam索引

alter table  tablename disable keys;//禁用索引

load data;

alter table  tablename enable keys;//啟用索引

不過這種方法對於唯一索引不起作用

mysql調優之schema優化

mysql的三正規化 1nf 第一正規化 字段不可分 2nf 第二正規化 有主鍵,非主鍵字段依賴主鍵 3nf 第三正規化 非主鍵字段不能相互依賴 解釋 1nf 原子性 字段不可再分,否則就不是關聯式資料庫 2nf 唯一性 乙個表只說明乙個事物 3nf 每列都與主鍵有直接關係,不存在傳遞依賴 在企業中...

《高效能mysql》二schema與資料型別優化

1 更小的通常更好 一般情況下,應該盡量使用可以正確儲存資料的最小資料型別。更小的資料型別通常更快,因為他們占用更少的磁碟 記憶體和cpu快取,並且處理時需要的cpu週期也更少。2 簡單就好 簡單資料型別的操作通常需要更少的cpu週期。3 盡量避免null 通常情況下最好指定列為not null,除...

高效能MySQL(三) Schema與資料型別優化

mysql schema設計中的問題 mysql支援的資料型別非常多,選擇正確的資料型別對於獲得高效能至關重要。下面幾個簡單的原則有助於做出更好的選擇 更小的通常更好 簡單就好 避免null 本篇預設儲存引擎是innodb 有兩種型別的數字 整數和實數。如果儲存整數,可以使用這幾種整數型別 tiny...