国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

MySQL中存儲引擎InnoDB配置與使用的示例分析

發(fā)布時(shí)間:2021-08-08 19:37 來(lái)源:億速云 閱讀:0 作者:小新 欄目: Mysql 歡迎投稿:712375056

這篇文章將為大家詳細講解有關(guān)中存儲引擎InnoDB配置與使用的示例分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

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

如何設置InnoDB為默認引擎:

  • 1. 查看mysql存儲引擎情況: mysql>show engines。 InnoDB | YES,說(shuō)明此mysql數據支持InnoDB引擎。

  • 2. 設置InnoDB為默認引擎:在配置文件my.ini中的 [mysqld] 下面加入default-storage-engine=INNODB

  • 3. 重啟mysql服務(wù)器

  • 4. 登錄mysql數據庫,mysql>show engines。如果出現 InnoDB |DEFAULT,則表示設置InnoDB為默認引擎成功。

InnoDB常用配置參數:

#InnoDB存儲數據字典、內部數據結構的緩沖池,16MB 已經(jīng)足夠大了。
innodb_additional_mem_pool_size = 16M
#InnoDB用于緩存數據、索引、鎖、插入緩沖、數據字典等
#如果是專(zhuān)用的DB服務(wù)器,且以InnoDB引擎為主的場(chǎng)景,通??稍O置物理內存的50%
#如果是非專(zhuān)用DB服務(wù)器,可以先嘗試設置成內存的1/4,如果有問(wèn)題再調整
#默認值是8M,非??覺(jué),這也是導致很多人覺(jué)得InnoDB不如MyISAM好用的緣故
innodb_buffer_pool_size = 4G
#InnoDB共享表空間初始化大小,默認是 10MB,也非??覺(jué),改成 1GB,并且自動(dòng)擴展
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
#設置事務(wù)隔離級別為 READ-COMMITED,提高事務(wù)效率,通常都滿(mǎn)足事務(wù)一致性要求
transaction_isolation = READ-COMMITTED 
其他配置選項也需要注意:
#設置最大并發(fā)連接數,如果前端程序是PHP,可適當加大,但不可過(guò)大
#如果前端程序采用連接池,可適當調小,避免連接數過(guò)大
max_connections = 60
#最大連接錯誤次數,可適當加大,防止頻繁連接錯誤后,前端host被mysql拒絕掉
max_connect_errors = 100000
#設置慢查詢(xún)閥值,建議設置最小的 1 秒
long_query_time = 1
#設置臨時(shí)表最大值,這是每次連接都會(huì )分配,不宜設置過(guò)大 max_heap_table_size 和 tmp_table_size 要設置一樣大
max_heap_table_size = 96M
tmp_table_size = 96M
#每個(gè)連接都會(huì )分配的一些排序、連接等緩沖,一般設置為 2MB 就足夠了
sort_buffer_size = 2M
join_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
#建議關(guān)閉query cache,有些時(shí)候對性能反而是一種損害
query_cache_size = 0
#如果是以InnoDB引擎為主的DB,專(zhuān)用于MyISAM引擎的 key_buffer_size 可以設置較小,8MB 已足夠
#如果是以MyISAM引擎為主,可設置較大,但不能超過(guò)4G
#在這里,強烈建議不使用MyISAM引擎,默認都是用InnoDB引擎
key_buffer_size = 8M
#設置連接超時(shí)閥值,如果前端程序采用短連接,建議縮短這2個(gè)值
#如果前端程序采用長(cháng)連接,可直接注釋掉這兩個(gè)選項,是用默認配置(8小時(shí))
interactive_timeout = 120
wait_timeout = 120

幾個(gè)關(guān)于InnoDB引擎數據表設計相關(guān)的建議:

  • 1. 所有InnoDB數據表都創(chuàng )建一個(gè)和業(yè)務(wù)無(wú)關(guān)的自增數字型作為主鍵,對保證性能很有幫助;

  • 2. 杜絕使用text/blob,確實(shí)需要使用的,盡可能拆分出去成一個(gè)獨立的表;

  • 3. 時(shí)間戳建議使用 TIMESTAMP 類(lèi)型存儲;

  • 4. IPV4 地址建議用 INT UNSIGNED 類(lèi)型存儲;

  • 5. 性別等非是即非的邏輯,建議采用 TINYINT 存儲,而不是 CHAR(1);

  • 6. 存儲較長(cháng)文本內容時(shí),建議采用JSON/BSON格式存儲;

InnoDB鎖類(lèi)型

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

  • 共享鎖(S Lock), 允許事務(wù)讀一行數據

  • 排他鎖(X Lock),允許事務(wù)刪除或更新一行數據

共享鎖和排他鎖的兼容

注意:

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

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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

五月丁香六月狠狠爱综合| 亚洲国产精品无码久久| 在线精品亚洲一区二区 | 中文字幕精品一二三四五六七八| 爽爽影院免费观看| 2022久久国产精品免费热麻豆|