久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

141次閱讀
沒有評論

共計 2616 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 MySQL 中存儲引擎 InnoDB 配置與使用的示例分析,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

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

如何設置 InnoDB 為默認引擎:

1. 查看 mysql 存儲引擎情況:mysql show engines。InnoDB | YES,說明此 mysql 數(shù)據(jù)庫服務器支持 InnoDB 引擎。

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

3. 重啟 mysql 服務器

4. 登錄 mysql 數(shù)據(jù)庫,mysql show engines。如果出現(xiàn) InnoDB |DEFAULT,則表示設置 InnoDB 為默認引擎成功。

InnoDB 常用配置參數(shù):

#InnoDB 存儲數(shù)據(jù)字典、內部數(shù)據(jù)結構的緩沖池,16MB  已經足夠大了。innodb_additional_mem_pool_size = 16M
#InnoDB 用于緩存數(shù)據(jù)、索引、鎖、插入緩沖、數(shù)據(jù)字典等
#如果是專用的 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,能較好保護數(shù)據(jù)可靠性,對性能有一定影響,但可控
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,便于管理員查看以及監(jiān)控等
innodb_status_file = 1
#設置事務隔離級別為  READ-COMMITED,提高事務效率,通常都滿足事務一致性要求
transaction_isolation = READ-COMMITTED 
其他配置選項也需要注意:#設置最大并發(fā)連接數(shù),如果前端程序是 PHP,可適當加大,但不可過大
#如果前端程序采用連接池,可適當調小,避免連接數(shù)過大
max_connections = 60
#最大連接錯誤次數(shù),可適當加大,防止頻繁連接錯誤后,前端 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 引擎數(shù)據(jù)表設計相關的建議:

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

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

3. 時間戳建議使用 TIMESTAMP 類型存儲;

4. IPV4 地址建議用 INT UNSIGNED 類型存儲;

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

6. 存儲較長文本內容時,建議采用 JSON/BSON 格式存儲;

InnoDB 鎖類型

InnoDB 存儲引擎實現(xiàn)如下兩種標準的行級鎖

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

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

共享鎖和排他鎖的兼容

注意:

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

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

關于“MySQL 中存儲引擎 InnoDB 配置與使用的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-04發(fā)表,共計2616字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 大庆市| 凤阳县| 台湾省| 陇西县| 长兴县| 于都县| 新昌县| 定远县| 民权县| 田东县| 荆州市| 星子县| 阿拉善右旗| 宁远县| 怀远县| 哈巴河县| 温宿县| 阳谷县| 道真| 绩溪县| 揭阳市| 津南区| 缙云县| 双柏县| 怀仁县| 即墨市| 萍乡市| 梁河县| 布尔津县| 巫山县| 长阳| 左贡县| 洛川县| 遵化市| 车险| 多伦县| 白河县| 丰都县| 舞钢市| 邯郸县| 纳雍县|