mysql列名可以用中文吗_用了这么久的MySQL,你知道它的存储引擎吗?
每天叫醒你的不是鬧鐘,而是夢(mèng)想
1
MySQL數(shù)據(jù)庫(kù)引擎簡(jiǎn)介
1.1 ISAM(Indexed Sequential Access Method)
? ? ? ? ?ISAM是一個(gè)定義明確且歷經(jīng)時(shí)間考驗(yàn)的數(shù)據(jù)表格管理方法,它在設(shè)計(jì)之時(shí)就考慮到數(shù)據(jù)庫(kù)被查詢(xún)的次數(shù)遠(yuǎn)大于更新的次數(shù)。因此,ISAM執(zhí)行讀取操作的速度很快,而且不占用大量的內(nèi)存和存儲(chǔ)資源。ISAM的兩個(gè)主要不足之處在于,它不支持事務(wù)處理,也不能夠容錯(cuò)。如果你的硬盤(pán)崩潰了,那么數(shù)據(jù)文件就無(wú)法恢復(fù)。所以你必須經(jīng)常備份你所有的數(shù)據(jù)。
1.2 MyISAM
? ? ? ? ?MyISAM是MySQL的ISAM拓展格式數(shù)據(jù)庫(kù)引擎。除了提供ISAM里所沒(méi)有的索引和字段管理的大量功能,MyISAM還使用一種表格鎖定的機(jī)制,來(lái)優(yōu)化多個(gè)并發(fā)的讀寫(xiě)操作,其代價(jià)是你需要經(jīng)常運(yùn)行OPTIMIZE TABLE命令,來(lái)恢復(fù)被更新機(jī)制所浪費(fèi)的空間。MyISAM一個(gè)重要缺陷就是不能在表?yè)p壞后恢復(fù)數(shù)據(jù),且不支持事務(wù)。
說(shuō)明:當(dāng)我們使用mysql進(jìn)行delete數(shù)據(jù),delete完以后,發(fā)現(xiàn)空間文件ibd并沒(méi)有減少,這是因?yàn)樗槠臻g的存在。利用未使用的空間,釋放出來(lái),并整理數(shù)據(jù)文件的碎片。(具體可以查閱資料)
1.3 InnoDB
? ? ? ? InnoDB數(shù)據(jù)庫(kù)引擎都是造就MySQL靈活性的技術(shù)的直接產(chǎn)品,這項(xiàng)技術(shù)就是MySQL++API。在使用MySQL的時(shí)候,你所面對(duì)的每一個(gè)挑戰(zhàn)幾乎都源于ISAM和MyISAM數(shù)據(jù)庫(kù)引擎不支持事務(wù)處理,也不支持外鍵。盡管要比其他兩個(gè)引擎慢很多,但是InnoDB包括了事務(wù)處理和外來(lái)鍵的支持,這兩點(diǎn)都是前兩個(gè)引擎所沒(méi)有的。是現(xiàn)在的MySQL(5.5以上版本)常用版本默認(rèn)引擎、
2
存儲(chǔ)引擎管理
2.1查看數(shù)據(jù)庫(kù)支持的存儲(chǔ)引擎
show engines
從查詢(xún)結(jié)果中:
Engine參數(shù)指存儲(chǔ)引擎名稱(chēng);
Support參數(shù)說(shuō)明MySQL是否支持該類(lèi)型引擎;
Comment參數(shù)表示對(duì)該引擎的評(píng)論;
Transaction參數(shù)則表示該引擎是否支持事務(wù)處理
XA參數(shù)表示是否分布式交易處理的XA規(guī)范
Savepoints參數(shù)表示是否支持保存點(diǎn)。
2.2 查看當(dāng)前數(shù)據(jù)庫(kù)使用的存儲(chǔ)引擎
show variables like '%engine%'2.3 查看數(shù)據(jù)庫(kù)表所用的引擎
show create table table_name;2.4 創(chuàng)建表指定存儲(chǔ)引擎
create table table_name (column_name column_type) engine = engine_name2.5 修改表的存儲(chǔ)引擎
alert table table_name engine = engine_name3
InnoDB
2.1 InnoDB特點(diǎn)
InnoDB支持事務(wù),對(duì)于每一條SQL語(yǔ)言都默認(rèn)封裝成事務(wù),自動(dòng)提交。這樣會(huì)影響速度,所以最好把多條SQL語(yǔ)言放在begin transaciton和commit之間,組成一個(gè)事務(wù)。
InnoDBz支持外鍵,而MyISAM不支持。對(duì)一個(gè)包含外鍵的InnoDB表轉(zhuǎn)為MYISAM會(huì)失敗。
InnoDB是聚集索引,數(shù)據(jù)文件是和索引綁在一起的,必須要有主鍵,通過(guò)主鍵索引效率很高。但是輔助索引需要兩次查詢(xún),先查詢(xún)到主鍵,然后再通過(guò)主鍵查詢(xún)到數(shù)據(jù)。
InnoDB不保存表的具體行數(shù),執(zhí)行select count(*) from table時(shí)需全表掃描。而MyISAM用一個(gè)變量保存了整個(gè)表的行數(shù),執(zhí)行上述語(yǔ)句時(shí)只需要讀出該變量即可,速度很快。
InnoDB不支持全文索引,而MyISAM支持,查詢(xún)效率上MyISAM要高一點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的mysql列名可以用中文吗_用了这么久的MySQL,你知道它的存储引擎吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python定位文件位置_python使
- 下一篇: mysql 排名_微服务架构下,如何利用