日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL的常见存储引擎介绍与参数设置调优

發(fā)布時(shí)間:2025/3/15 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL的常见存储引擎介绍与参数设置调优 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MySQL常用存儲(chǔ)引擎之MyISAM

特性:1、并發(fā)性與鎖級(jí)別2、表?yè)p壞修復(fù)check table tablenamerepair table tablename3、MyISAM表支持的索引類型①、全文索引②、前綴索引4、MyISAM表支持?jǐn)?shù)據(jù)壓縮myisampack 限制:版本 < MySQL5.0時(shí)默認(rèn)表大小為4G如存儲(chǔ)達(dá)標(biāo)則要修改MAX_Rows和AVG_ROW_LENGTH版本 > MySQL5.0時(shí)默認(rèn)支持為256TB適用場(chǎng)景:1、非事務(wù)形應(yīng)用2、只讀類應(yīng)用3、空間類應(yīng)用

MySQL常用存儲(chǔ)引擎之Innodb

Innodb存儲(chǔ)引擎的特征1、Innodb是一種事務(wù)性存儲(chǔ)引擎2、完全支持事務(wù)的ACID特性3、Redo Log 和 Undo Log4、Innodb支持行級(jí)鎖Innodb使用表空間進(jìn)行 數(shù)據(jù)存儲(chǔ)為每個(gè)表獨(dú)立創(chuàng)建一個(gè)表空間存儲(chǔ)innodb_file_per_tableON:獨(dú)立表空間:tablename.ibdOFF:系統(tǒng)表空間:ibdataX(X是個(gè)數(shù)字,從1開(kāi)始的數(shù)字)系統(tǒng)表空間和獨(dú)立表空間要如何選擇比較:系統(tǒng)表空間無(wú)法撿的收縮文件大小獨(dú)立表空格鍵可以通過(guò)optimize table命令收縮系統(tǒng)文件系統(tǒng)表空間會(huì)產(chǎn)生IO瓶頸獨(dú)立表空間可以同時(shí)向多個(gè)文件刷新數(shù)據(jù)表轉(zhuǎn)移的步驟步驟:1、使用mysqldump到處所有數(shù)據(jù)庫(kù)表數(shù)據(jù)2、停止MySQL服務(wù),修改參數(shù),并刪除Innodb相關(guān)文件3、重啟MySQL服務(wù),重建Innodb系統(tǒng)表空間4、重新導(dǎo)入數(shù)據(jù)

MySQL常見(jiàn)的存儲(chǔ)引擎之CSV

文件系統(tǒng)存儲(chǔ)特點(diǎn)1、數(shù)據(jù)以文本方式存儲(chǔ)在文本中2、.csv文件存儲(chǔ)表內(nèi)容3、.csm文件存儲(chǔ)表的元數(shù)據(jù)如表狀態(tài)和數(shù)據(jù)量4、.frm文件存儲(chǔ)表結(jié)構(gòu)信息5、以csv格式進(jìn)行存儲(chǔ)6、所有列必須都是不能為Null的7、不支持索引適用場(chǎng)景:適用作為數(shù)據(jù)交換的中間表(電子表格->csv文件->MySQL數(shù)據(jù)庫(kù)目錄)

MySQL常用存儲(chǔ)引擎之Archive

文件系統(tǒng)存儲(chǔ)特點(diǎn)1、以zlib對(duì)表數(shù)據(jù)進(jìn)行壓縮,磁盤I/O更少2、數(shù)據(jù)存儲(chǔ)在ARZ為后綴的文件中Archive存儲(chǔ)引擎的特點(diǎn)1、只支持insert和select操作2、只允許在自增的ID列上加索引適用場(chǎng)景:日志和數(shù)據(jù)采集類應(yīng)用

MySQL常用存儲(chǔ)引擎之Memory

文件系統(tǒng)存儲(chǔ)特點(diǎn)1、也成HEAP存儲(chǔ)引擎,所以數(shù)據(jù)保存在內(nèi)存中功能特點(diǎn):1、支持HASH索引和Btree索引2、所有字段都有固定長(zhǎng)度varchar(10)=char(10)3、不支持BLOG和TEXT等大字段4、Memory存儲(chǔ)引擎使用表級(jí)鎖5、最大大小由max_heap_table_size參數(shù)決定適用場(chǎng)景:1、用于查找或者是映射表,例如郵編和地區(qū)的對(duì)應(yīng)表2、用于保存數(shù)據(jù)分心中產(chǎn)生的中間表3、用于緩存周期性聚合數(shù)據(jù)的結(jié)果表

MySQL常用存儲(chǔ)引擎之Federated

特點(diǎn):1、提供了訪問(wèn)遠(yuǎn)程MySQL服務(wù)器上表的方法2、本地不存儲(chǔ)數(shù)據(jù),數(shù)據(jù)全部放到遠(yuǎn)程服務(wù)器上3、本地需要保存表結(jié)構(gòu)和遠(yuǎn)程服務(wù)器的連接信息如何使用默認(rèn)靜止,啟用需要在啟動(dòng)時(shí)增加federated參數(shù)mysql://user_name[:password]@host_name[:port]/db_name/table_name適用場(chǎng)景:偶爾的統(tǒng)計(jì)分析及手工查詢

如何選擇正確的存儲(chǔ)引擎

參考條件1、是否要支持事務(wù)2、定期備份3、崩潰恢復(fù)4、存儲(chǔ)引擎的特有特性

Mysql的服務(wù)器參數(shù)介紹

MySQL獲取配置信息路徑1、命令行參數(shù)mysqld_safe --datadir=/data/sql_data2、配置文件查看配置文件的命令:[root@localhost ~]# mysqld --help --verbose | egrep -A 1 'Default options'配置文件的有效路徑/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnfMySQL配置參數(shù)的作用域1、全局參數(shù)set global 參數(shù)名=參數(shù)值;set @@global.參數(shù)名:=參數(shù)值;2、會(huì)話參數(shù) set [session] 參數(shù)名=參數(shù)值;set @@session.參數(shù)名:=參數(shù)值;內(nèi)存配置相關(guān)參數(shù)1、確定可以使用的內(nèi)存的上限2、確定MySQL的每個(gè)連接使用的內(nèi)存sort_buffer_sizejoin_buffer_sizeread_buffer_sizeread_rnd_buffer_size3、確定需要為操作系統(tǒng)保留多少內(nèi)存4、如何為緩存池分配內(nèi)存Innodb_buffer_pool_size注:設(shè)置緩存池的大小的考量標(biāo)準(zhǔn)為:總內(nèi)存-(每個(gè)編程所以需要的內(nèi)存*連接數(shù))-系統(tǒng)保留內(nèi)存key_buffer_sizeselect sum(index_length) from information_schema.tables where engines='myisam'I/O相關(guān)配置參數(shù)Innodo I/O相關(guān)配置Innodb_log_file_size 單個(gè)事務(wù)日志的大小Innodb_log_files_in_group 控制文件日子的個(gè)數(shù)事務(wù)日志總大小 = Innodb_log_files_in_group * Innodb_log_file_sizeInnodb_log_buffer_size = (32M or 128M)Innodb_flush_log_at_trx_commint0:每秒進(jìn)行一次log寫(xiě)入cache,并flush log到磁盤1[默認(rèn)]:在每次事務(wù)提交執(zhí)行l(wèi)og寫(xiě)入cache,并flush log到磁盤2[建議]:每次事務(wù)提交,執(zhí)行l(wèi)og數(shù)據(jù)寫(xiě)入到cache中,每秒執(zhí)行一次flush log到磁盤Innodb_flush_method=O_DIRECTInnodb_file_per_table = 1Innodb_doublewrite = 1MyISAM I/O相關(guān)配置delay_key_writeOFF:每次寫(xiě)操作后刷新鍵緩沖中的臟塊到磁盤ON:只對(duì)在鍵表時(shí)指定了delay_key_write選項(xiàng)的表使用延遲刷新ALL:對(duì)所有的MyISAM表都使用延遲建寫(xiě)入安全相關(guān)配置參數(shù)expire_logs_days 指定自動(dòng)清理binlog的天數(shù)max_allowed_packet 控制MySQL可以連接的包大小,建議設(shè)置為32M,如果使用了主從復(fù)制,參數(shù)應(yīng)該設(shè)置成一致的skip_name_resolve 禁用DNS查找sysdate_is_now 確保sysdate()返回確保性日期read_only 禁止非super權(quán)限的用戶寫(xiě)操作 注:建議在主從復(fù)制中的從庫(kù)開(kāi)啟此功能。以確保不能修改從庫(kù)中的操作,只能從主庫(kù)同步過(guò)來(lái)skip_slave_start 禁用Salve自動(dòng)恢復(fù)(從庫(kù)中的設(shè)置使用)sql_mode 設(shè)置MySQL所使用的SQL模式 (謹(jǐn)慎操作,可能會(huì)造成MySQL無(wú)法執(zhí)行)① strict_trans_tables 給定的數(shù)據(jù)如果不能插入到數(shù)據(jù)庫(kù)中,對(duì)事務(wù)引擎會(huì)終端操作,對(duì)非事務(wù)引擎是沒(méi)有影響的② no_engine_subitiution 在create table中指定engines的時(shí)候,如果引擎不可用,不會(huì)使用默認(rèn)引擎建立表③ no_zero_date 不能再表中插入0年0月0日的日期④ no_zero_in_date 不接受一部分的為0的日期⑤ noly_full_group_by 其他常用的配置參數(shù)sync_binlog 控制MySQL如何向磁盤刷新binlogtmp_table_size 和 max_heap_table_size 控制內(nèi)存臨時(shí)表大小(不宜設(shè)置的太大,以避免內(nèi)存的溢出)max_connections 控制允許的最大連接數(shù)(默認(rèn)為100,有點(diǎn)小,根據(jù)自己的業(yè)務(wù)適當(dāng)?shù)恼{(diào)整大小)

什么影響了性能

數(shù)據(jù)庫(kù)設(shè)計(jì)對(duì)性能的影響1、過(guò)分的反范式化為表建立太多的列2、過(guò)分的范式化造成太多的表關(guān)聯(lián)(關(guān)聯(lián)的表盡可能的控制在10個(gè)之內(nèi))3、在OLTP環(huán)境中使用不恰當(dāng)?shù)姆謪^(qū)表4、使用外鍵保證數(shù)據(jù)的完整性

總結(jié)

性能優(yōu)化的順序1、數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)和SQL語(yǔ)句2、數(shù)據(jù)庫(kù)存儲(chǔ)引擎的選擇參數(shù)配置3、系統(tǒng)選擇及優(yōu)化4、硬件升級(jí)

版權(quán)所有,轉(zhuǎn)載請(qǐng)注明出處!http://www.cnblogs.com/demon89/p/8490229.html

轉(zhuǎn)載于:https://www.cnblogs.com/demon89/p/mysql_engines.html

總結(jié)

以上是生活随笔為你收集整理的MySQL的常见存储引擎介绍与参数设置调优的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。