MySQL從MyISAM引擎轉(zhuǎn)換到InnoDB引擎需要注意的地方_MySQL教程
推薦:MySQL安全配置詳解1. 前言 Mysql數(shù)據(jù)庫(kù)安全配置、或者叫加固屬于風(fēng)險(xiǎn)模型中的一環(huán),它需要安全人員在理論和實(shí)踐的學(xué)習(xí)中不斷發(fā)現(xiàn)新的問(wèn)題,并針對(duì)這些問(wèn)題對(duì)數(shù)據(jù)的各個(gè)方面的配置進(jìn)行強(qiáng)化。本文試圖圍繞著數(shù)據(jù)庫(kù)風(fēng)險(xiǎn)識(shí)別、數(shù)據(jù)庫(kù)安全加固這個(gè)問(wèn)題,探討可以采取的措施來(lái)最大程度的保證我
分析 當(dāng)了解完兩種引擎的不同之處,很輕松的就能知道有哪些關(guān)鍵點(diǎn)了。
總的來(lái)說(shuō),從MyISAM轉(zhuǎn)向InnoDB的注意事項(xiàng)有:
1、MyISAM的主鍵索引中,可以在非第一列(非第一個(gè)字段)使用自增列,而InnoDB的主鍵索引中包含自增列時(shí),必須在最前面;這個(gè)特性在discuz論壇中,被設(shè)計(jì)用于“搶樓”功能,因此,若有類似的業(yè)務(wù),則無(wú)法將該表從MyISAM轉(zhuǎn)成InnoDB,需要自行變通實(shí)現(xiàn)(我們則是將其改到Redis中實(shí)現(xiàn));
2、不帶條件頻繁統(tǒng)計(jì)全表總記錄數(shù)時(shí)(SELECT COUNT(*) FROM TAB),InnoDB相對(duì)較慢,而MyISAM則飛快;不過(guò),如果是基于索引條件的統(tǒng)計(jì),則二者相差不大;
3、InnoDB在5.6以前不支持全文索引,不過(guò)這個(gè)相信無(wú)所謂,沒(méi)什么人會(huì)在MySQL里直接跑全文索引,尤其是對(duì)中文的全文索引(前陣子有開發(fā)同學(xué)提需求直接被我否了),確實(shí)有需要的話,可以采用Sphinx、Lucene等其他方案實(shí)現(xiàn);
4、一次性導(dǎo)入大量數(shù)據(jù)并且后續(xù)還要進(jìn)行加工處理的,可以先導(dǎo)入到MyISAM引擎表中,經(jīng)過(guò)一通加工處理完后,再導(dǎo)入InnoDB表(我曾經(jīng)在業(yè)務(wù)中用此方法提高數(shù)據(jù)批量導(dǎo)入及處理效率);
5、InnoDB不支持LOAD TABLE FROM MASTER語(yǔ)法(不過(guò)應(yīng)該也很少人使用吧);
從MyISAM轉(zhuǎn)成InnoDB可以享受的好處則有:
1、完整事務(wù)特性支持,以及更高的數(shù)據(jù)并發(fā)存取效率,即更高的TPS;
2、數(shù)據(jù)庫(kù)實(shí)例異常重啟后,InnoDB表能自動(dòng)修復(fù),而且速度相對(duì)更快,而MyISAM需要被觸發(fā)才能修復(fù),且相對(duì)耗時(shí)可能多4~5倍甚至更多;
3、更高的數(shù)據(jù)讀取性能,因?yàn)镮nnoDB把數(shù)據(jù)及索引同時(shí)緩存在內(nèi)存中,而MyISAM只緩存了索引;
4、InnoDB支持外鍵(不過(guò)在MySQL中,應(yīng)該很少人用到外鍵);
兩個(gè)引擎間的重要區(qū)別詳情見下:
MyISAM引擎的特點(diǎn):
1、堆組織表;
2、不支持事務(wù);
"tn-Powered-by-XIUMI">3、數(shù)據(jù)文件和索引文件分開存儲(chǔ);
"tn-Powered-by-XIUMI">4、支持全文索引;
"tn-Powered-by-XIUMI">5、主鍵索引和二級(jí)索引完全一樣都是B+樹的數(shù)據(jù)結(jié)構(gòu),只有是否唯一的區(qū)別(主鍵和唯一索引有唯一屬性,其他普通索引沒(méi)有唯一屬性。B+樹葉子節(jié)點(diǎn)存儲(chǔ)的都是指向行記錄的row pointer);
6、有特殊計(jì)數(shù)器記錄當(dāng)前記錄數(shù);
7、不支持Crash recovery;
8、索引文件很容易損壞;
InnoDB引擎的特點(diǎn)
1、索引組織表;
2、支持事務(wù);
"tn-Powered-by-XIUMI">3、數(shù)據(jù)文件和索引文件存儲(chǔ)在同一個(gè)表空間中;
"tn-Powered-by-XIUMI">4、在5.6以前,不支持全文索引;
"tn-Powered-by-XIUMI">5、主鍵和二級(jí)索引數(shù)據(jù)結(jié)構(gòu)一樣都是B+樹,但葉子節(jié)點(diǎn)存儲(chǔ)的鍵值不一樣(主鍵的葉子節(jié)點(diǎn)存儲(chǔ)整行數(shù)據(jù),因此也稱為聚集索引;而二級(jí)索引的葉子節(jié)點(diǎn)存儲(chǔ)的是主鍵的鍵值)
5、支持Crash recovery;
6、相同數(shù)據(jù)量時(shí),InnoDB表空間文件大小約為MyISAM引擎的1.5~2倍;
分享:MySQL中實(shí)現(xiàn)高性能高并發(fā)計(jì)數(shù)器方案現(xiàn)在有很多的項(xiàng)目,對(duì)計(jì)數(shù)器的實(shí)現(xiàn)甚是隨意,比如在實(shí)現(xiàn)網(wǎng)站文章點(diǎn)擊數(shù)的時(shí)候,是這么設(shè)計(jì)數(shù)據(jù)表的,如:article_id, article_name, article_content, article_author, article_view在article_view中記錄該文章的瀏覽量。詐一看似乎沒(méi)有問(wèn)題。對(duì)于小站,比如本博客,就
- MySQL安全配置詳解
- MySQL中實(shí)現(xiàn)高性能高并發(fā)計(jì)數(shù)器方案
- 創(chuàng)建MySQL從庫(kù)
- mysql語(yǔ)句中使用like后面的%(百分號(hào))的問(wèn)題
- sqlserver數(shù)據(jù)實(shí)時(shí)同步到mysql
- EXP-00091: Exporting questionable statistics
- 由于文件組 ‘DEFAULT’ 中的磁盤空間不足,無(wú)法為數(shù)據(jù)庫(kù) ‘TEMPDB’ 分配新頁(yè)
- sqlserver多版本查看版本號(hào)
- 如何正確查看 SQL Server 2005 版本號(hào)?
- SQL查詢語(yǔ)句中的bool類型字段值的寫法
- SQL Server 2005建立與服務(wù)器的連接時(shí)出錯(cuò)的解決方案
- MySQL中GROUP BY的基本實(shí)現(xiàn)原理
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- 解決bash: mysql: command not found 的方法
- PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語(yǔ)句的實(shí)現(xiàn)代碼
- MySQL數(shù)據(jù)庫(kù)INSERT、UPDATE、DELETE以及REPLACE語(yǔ)句的用法詳解
- 總結(jié)MySQL建表、查詢優(yōu)化的一些實(shí)用小技巧
- SQLServer導(dǎo)出數(shù)據(jù)到MySQL實(shí)例介紹
- SQL查詢語(yǔ)句中的bool類型字段值的寫法
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖
- MYSQL 批量替換之replace語(yǔ)法的使用詳解
- mysql服務(wù)器字符集查詢和設(shè)置方法
- Mysql高性能備份方案解決數(shù)據(jù)不間斷訪問(wèn)
猜你也喜歡看這些
- 數(shù)據(jù)類型的表達(dá)式轉(zhuǎn)換為另一種數(shù)據(jù)類型
- SQL SERVER 2000安裝教程圖文詳解
- SQL Server 數(shù)據(jù)庫(kù)安全管理介紹
- 怎樣使用SQLServer數(shù)據(jù)庫(kù)查詢累計(jì)值
- 關(guān)于sqlserver 2005 使用臨時(shí)表的問(wèn)題( Invalid object name #temptb)
- SQL SERVER應(yīng)用問(wèn)題解答13例(一)
- sqlserver 2005連接超時(shí)采用bat命令解決
- SQL Server 2008存儲(chǔ)結(jié)構(gòu)之GAM、SGAM介紹
- SQL2008定時(shí)任務(wù)作業(yè)創(chuàng)建教程
- 解讀Oracle數(shù)據(jù)庫(kù)SQL語(yǔ)句性能調(diào)整的基本原則
- 相關(guān)鏈接:
- 教程說(shuō)明:
MySQL教程-MySQL從MyISAM引擎轉(zhuǎn)換到InnoDB引擎需要注意的地方
。