一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MySQL存儲引擎InnoDB的配置與使用的講解

MySQL存儲引擎InnoDB的配置與使用的講解

2019-06-24 11:08CODETC Mysql

今天小編就為大家分享一篇關于MySQL存儲引擎InnoDB的配置與使用的講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

MyISAM和InnoDB是MySQL最常有的存儲引擎,上一篇我們講述了InnoDB與MyISAM之間的區別;由于MyISAM不支持事務,當我們需要使用一個健壯的事務型存儲引擎的時候,InnoDB必然是最好的選擇。

innodb 通過多版本并發控制(MVCC)來獲得高并發性,并且實現了SQL標準的4種隔離級別,默認為REPEATABLE級別。同時,使用一種被稱為next-key locking的策略來避免幻讀(phantom)現象的產生。除此之外,InnoDB存儲引擎還提供了插入緩沖(insert buffer)、二次讀寫(double write)、自適應哈希索引(adaptive hash index)、預讀(read ahead)等高性能和高可用的功能。

如何設置InnoDB為默認引擎:

  • 1. 查看mysql存儲引擎情況: mysql>show engines。 InnoDB | YES,說明此mysql數據庫服務器支持InnoDB引擎。
  • 2. 設置InnoDB為默認引擎:在配置文件my.ini中的 [mysqld] 下面加入default-storage-engine=INNODB
  • 3. 重啟mysql服務器
  • 4. 登錄mysql數據庫,mysql>show engines。如果出現 InnoDB |DEFAULT,則表示設置InnoDB為默認引擎成功。

InnoDB常用配置參數:

#InnoDB存儲數據字典、內部數據結構的緩沖池,16MB 已經足夠大了。
innodb_additional_mem_pool_size = 16M
#InnoDB用于緩存數據、索引、鎖、插入緩沖、數據字典等
#如果是專用的DB服務器,且以InnoDB引擎為主的場景,通常可設置物理內存的50%
#如果是非專用DB服務器,可以先嘗試設置成內存的1/4,如果有問題再調整
#默認值是8M,非??覺,這也是導致很多人覺得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

幾個關于InnoDB引擎數據表設計相關的建議:

  • 1. 所有InnoDB數據表都創建一個和業務無關的自增數字型作為主鍵,對保證性能很有幫助;
  • 2. 杜絕使用text/blob,確實需要使用的,盡可能拆分出去成一個獨立的表;
  • 3. 時間戳建議使用 TIMESTAMP 類型存儲;
  • 4. IPV4 地址建議用 INT UNSIGNED 類型存儲;
  • 5. 性別等非是即非的邏輯,建議采用 TINYINT 存儲,而不是 CHAR(1);
  • 6. 存儲較長文本內容時,建議采用JSON/BSON格式存儲;

InnoDB鎖類型

InnoDB存儲引擎實現如下兩種標準的行級鎖

  • 共享鎖(S Lock), 允許事務讀一行數據
  • 排他鎖(X Lock),允許事務刪除或更新一行數據

共享鎖和排他鎖的兼容

MySQL存儲引擎InnoDB的配置與使用的講解

注意:

(1)S鎖和X鎖都是行鎖,兼容是指對同一記錄(row)鎖的兼容性.

(2)事務T1已經獲得行R的共享鎖,另一個事務T2可以立即獲得行R的共享鎖,這種情況稱為鎖兼容。事務T3想獲得行R的排他鎖,則必須等待事務T1、T2釋放行R上的共享鎖,這種情況成為鎖的不兼容.

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 1769亚洲欧美资源站 | 我的漂亮朋友在线观看全集免费 | 色花堂中文字幕98堂网址 | 欧美日韩国产成人综合在线 | 拍拍叫痛的无挡视频免费 | 免费特黄一级欧美大片在线看 | 欧美成人免费观看的 | 男同互操 | 操久| 免费看国产精品久久久久 | 成年性午夜免费视频网站不卡 | 欧美日韩国产成人综合在线 | 天天操天天做 | 国产精品日韩欧美一区二区 | 8x8x拔插 | 动漫美女被羞羞产奶 | 精品视频在线观看 | 亚洲国产精品成人午夜在线观看 | 全彩调教侵犯h本子全彩妖气he | 日本不卡在线观看免费v | 91寡妇天天综合久久影院 | 我的美女奴隶 | 亚洲国产欧美在线人成aaaa20 | 精品国语国产在线对白 | 欧美精品一区二区三区久久 | 亚洲福利在线观看 | 日本人在线看片 | 亚洲色图网址 | 九九99精品 | 亚州一区二区 | 能播放18xxx18女同 | 欧产日产国产精品专区 | 国产区成人精品视频 | 成人免费在线视频观看 | 亚洲青草| 国产成人影院 | 亚洲欧美日韩另类精品一区二区三区 | 暖暖视频免费观看视频中国.韩剧 | 99热精品国产麻豆 | a级亚洲片精品久久久久久久 | 国产rpg迷雾之风冷狐破解 |