oracle 和mysql的區(qū)別 innodb和myisam的區(qū)別?
innodb和myisam的區(qū)別?MyISAM和InnoDB之間的七個(gè)區(qū)別:1。MySQL默認(rèn)采用MyISAM。MyISAM不支持事務(wù),而InnoDB支持事務(wù)。InnoDB的Autommit默認(rèn)打開,
innodb和myisam的區(qū)別?
MyISAM和InnoDB之間的七個(gè)區(qū)別:1。MySQL默認(rèn)采用MyISAM。MyISAM不支持事務(wù),而InnoDB支持事務(wù)。InnoDB的Autommit默認(rèn)打開,即每條SQL語句默認(rèn)封裝為一個(gè)事務(wù),并自動(dòng)提交,影響速度。因此,最好在begin和commit之間顯示多個(gè)SQL語句,以形成要提交的事務(wù)。
2. InnoDB支持行鎖定,而MyISAM不支持。它只支持鎖定整個(gè)表。也就是說,MyISAM的同一個(gè)表上的讀鎖和寫鎖是互斥的。如果隊(duì)列中同時(shí)存在讀請求和寫請求,則默認(rèn)情況下寫請求的優(yōu)先級較高。即使讀取請求先到達(dá),MyISAM也不適合大量查詢和修改并存的情況,因此查詢過程會被長時(shí)間阻塞。因?yàn)镸yISAM是一個(gè)鎖表,所以讀操作非常耗時(shí),其他寫進(jìn)程也會餓死。
3. InnoDB支持外鍵,但MyISAM不支持。
4. InnoDB的主鍵范圍更大,是MyISAM的兩倍。
5. InnoDB不支持全文索引,而MyISAM支持。全文索引是指為char、varchar和text中的每個(gè)單詞(停止詞除外)建立倒排索引。MyISAM的全文索引實(shí)際上是無用的,因?yàn)樗恢С种形姆衷~。必須在分詞后加空格寫入數(shù)據(jù)表,少于4個(gè)漢字的詞作為停止詞將被忽略。
6. MyISAM支持GIS數(shù)據(jù),但I(xiàn)nnoDB不支持。也就是說,MyISAM支持以下空間數(shù)據(jù)對象:點(diǎn)、線、多邊形、曲面等。使用MyISAM而不計(jì)算(*)where要比使用InnoDB快得多。因?yàn)镸yISAM有一個(gè)內(nèi)置的計(jì)數(shù)器,當(dāng)count(*)時(shí),它直接從計(jì)數(shù)器中讀取,而InnoDB必須掃描整個(gè)表。因此,在InnoDB上執(zhí)行count(*)時(shí),通常伴隨where,where應(yīng)該包含主鍵以外的索引列。為什么特別強(qiáng)調(diào)“外主鍵”?在InnoDB中,主索引和原始數(shù)據(jù)一起存儲,而次索引分開存儲,然后有一個(gè)指向主鍵的指針。因此,如果只使用count(*),則次索引掃描速度更快,而主鍵主要用于掃描索引并同時(shí)返回原始數(shù)據(jù)。
mysql外鍵(ForeignKey)介紹和創(chuàng)建外鍵的方法?
在mysql中,InnoDB引擎類型表支持外鍵約束,而MyISAM類型不支持外鍵。建立外鍵關(guān)系的兩個(gè)表的列必須具有相似的數(shù)據(jù)類型,即可以相互轉(zhuǎn)換的列,例如int和tinyint,但不能是int和char。此外,在MSSQL中通過組合主鍵建立外鍵時(shí),也存在一些情況,因此不建議使用它們。外鍵的優(yōu)點(diǎn):可以關(guān)聯(lián)兩個(gè)表,保證數(shù)據(jù)的一致性,實(shí)現(xiàn)一些級聯(lián)操作。外鍵定義語法:這個(gè)語法可以在create table和alter table中使用。如果未指定約束符號,MySQL將自動(dòng)生成一個(gè)名稱。指定約束名稱很容易維護(hù),刪除約束可以使用ALTER TABLE tbluname DROP外鍵符號