mysql之InnoDB基礎瞭解

markzy5201190發表於2013-05-13
InnODB引擎支援眾多特性:

a) 支援ACID,簡單地說就是支援事務完整性、一致性;
b) 支援行鎖,以及類似ORACLE的一致性讀,多使用者併發;
c) 獨有的聚集索引主鍵設計方式,可大幅提升併發讀寫效能;
d) 支援外來鍵;
e) 支援崩潰資料自修復;

my.cnf 配置選項:

#InnoDB儲存資料字典、內部資料結構的緩衝池,16MB 已經足夠大了。
innodb_additional_mem_pool_size = 16M
#InnoDB用於快取資料、索引、鎖、插入緩衝、資料字典等
#如果是專用的DB伺服器,且以InnoDB引擎為主的場景,通常可設定實體記憶體的50%
#如果是非專用DB伺服器,可以先嚐試設定成記憶體的1/4,如果有問題再調整
#預設值是8M,非常坑X,這也是導致很多人覺得InnoDB不如MyISAM好用的緣故
innodb_buffer_pool_size = 4G

#InnoDB共享表空間初始化大小,預設是 10MB,也非常坑X,改成 1GB,並且自動擴充套件
innodb_data_file_path = ibdata1:1G:autoextend

#如果不瞭解本選項,建議設定為1,能較好保護資料可靠性,對效能有一定影響,但可控
innodb_flush_log_at_trx_commit = 1

#InnoDB的log buffer,通常設定為 64MB 就足夠了
innodb_log_buffer_size = 64M

#InnoDB redo log大小,通常設定256MB 就足夠了
innodb_log_file_size = 256M

#InnoDB redo log檔案組,通常設定為 2 就足夠了
innodb_log_files_in_group = 2

#啟用InnoDB的獨立表空間模式,便於管理
innodb_file_per_table = 1

#啟用InnoDB的status file,便於管理員檢視以及監控等
innodb_status_file = 1

#設定事務隔離級別為 READ-COMMITED,提高事務效率,通常都滿足事務一致性要求
transaction_isolation = READ-COMMITTED


其他注意的選擇:

#設定最大併發連線數,如果前端程式是PHP,可適當加大,但不可過大
#如果前端程式採用連線池,可適當調小,避免連線數過大
max_connections = 60

#最大連線錯誤次數,可適當加大,防止頻繁連線錯誤後,前端host被mysql拒絕掉
max_connect_errors = 100000

#設定慢查詢閥值,建議設定最小的 1 秒
long_query_time = 1

#設定臨時表最大值,這是每次連線都會分配,不宜設定過大 max_heap_table_size 和 tmp_table_size 要設定一樣大
max_heap_table_size = 96M
tmp_table_size = 96M

#每個連線都會分配的一些排序、連線等緩衝,一般設定為 2MB 就足夠了
sort_buffer_size = 2M
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M

#建議關閉query cache,有些時候對效能反而是一種損害
query_cache_size = 0

#如果是以InnoDB引擎為主的DB,專用於MyISAM引擎的 key_buffer_size 可以設定較小,8MB 已足夠
#如果是以MyISAM引擎為主,可設定較大,但不能超過4G
#在這裡,強烈建議不使用MyISAM引擎,預設都是用InnoDB引擎
key_buffer_size = 8M

#設定連線超時閥值,如果前端程式採用短連線,建議縮短這2個值
#如果前端程式採用長連線,可直接註釋掉這兩個選項,是用預設配置(8小時)
interactive_timeout = 120
wait_timeout = 120


資料表設計注意點:

a) 所有InnoDB資料表都建立一個和業務無關的自增數字型作為主鍵,對保證效能很有幫助;
b) 杜絕使用text/blob,確實需要使用的,儘可能拆分出去成一個獨立的表;
c) 時間戳建議使用 TIMESTAMP 型別儲存;
d) IPV4 地址建議用 INT UNSIGNED 型別儲存;
e) 性別等非是即非的邏輯,建議採用 TINYINT 儲存,而不是 CHAR(1);
f) 儲存較長文字內容時,建議採用JSON/BSON格式儲存;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26855487/viewspace-760965/,如需轉載,請註明出處,否則將追究法律責任。

相關文章