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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql myisam 支持事务吗_第三章(附)mysql表类型MyISAM和InnoDB区别(决定了是否支持事务)...

發布時間:2024/7/23 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql myisam 支持事务吗_第三章(附)mysql表类型MyISAM和InnoDB区别(决定了是否支持事务)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

mysql表類型MyISAM和InnoDB區別

MyISAM:這個是默認類型,它是基于傳統的ISAM類型,ISAM是Indexed Sequential Access Method (有索引的順序訪問方法) 的縮寫,它是存儲記錄和文件的標準方法.與其他存儲引擎比較,MyISAM具有檢查和修復表格的大多數工具. MyISAM表格可以被壓縮,而且它們支持全文搜索.它們不是事務安全的,而且也不支持外鍵。如果事物回滾將造成不完全回滾,不具有原子性。如果執行大量 的SELECT,MyISAM是更好的選擇。

InnoDB:這種類型是事務安全的.它與BDB類型具有相同的特性,它們還支持外鍵.InnoDB表格速度很快.具有比BDB還豐富的特性,因此如果需

要一個事務安全的存儲引擎,建議使用它.如果你的數據執行大量的INSERT或UPDATE,出于性能方面的考慮,應該使用InnoDB表,

對于支持事物的InnoDB類型的標,影響速度的主要原因是AUTOCOMMIT默認設置是打開的,而且程序沒有顯式調用BEGIN

開始事務,導致每插入一條都自動Commit,嚴重影響了速度。可以在執行sql前調用begin,多條sql形成一個事物(即使autocommit打

開也可以),將大大提高性能。

1. 4.0以上mysqld都支持事務,包括非max版本。3.23的需要max版本mysqld才能支持事務。

2. 創建表時如果不指定type則默認為myisam,不支持事務。

可以用 show create table tablename 命令看表的類型。

2.1 對不支持事務的表做start/commit操作沒有任何效果,在執行commit前已經提交,測試:

執行一個msyql:

use test;

drop table if exists tn;

create table tn (a varchar(10)) type=myisam;

drop table if exists ty;

create table ty (a varchar(10)) type=innodb;

begin;

insert into tn values(’a');

insert into ty values(’a');

select * from tn;

select * from ty;

都能看到一條記錄

執行另一個mysql:

use test;

select * from tn;

select * from ty;

只有tn能看到一條記錄

然后在另一邊

commit;

才都能看到記錄。

3. 可以執行以下命令來切換非事務表到事務(數據不會丟失),innodb表比myisam表更安全:

alter table tablename type=innodb;

3.1 innodb表不能用repair table命令和myisamchk -r table_name

但可以用check table,以及mysqlcheck [OPTIONS] database [tables]

4. 啟動mysql數據庫的命令行中添加了以下參數可以使新發布的mysql數據表都默認為使用事務(

只影響到create語句。)

–default-table-type=InnoDB

測試命令:

use test;

drop table if exists tn;

create table tn (a varchar(10));

show create table tn;

5. 臨時改變默認表類型可以用:

set table_type=InnoDB;

show variables like ‘table_type’;

或:

c:mysqlbinmysqld-max-nt –standalone –default-table-type=InnoDB

于mysql來說,最具有代表性的表存儲引擎就是InnoDB和MyISAM.兩者之間最主要的區別就是是否進行:是否進行外鍵的數據完整性檢查。

InnoDB 存儲引擎支持對外鍵約束的檢查功能,這些約束包括 delete,update,cascade(這個具體是什么含義,留待以后補充) 。

外鍵約束檢查(外鍵增強)的好處或者優點是:

1?????????? 如果關聯設計恰當,可以使程序員更難將數據不一致性引入數據庫

2?????????? 數據庫服務器具有集中式約束檢查功能,就可以不必再應用程序一側對數據進行該類檢查,從而避免了不同的引用程序使用不同的方式去檢查約束。

3?????????? 使用級聯更新和刪除,簡化了應用程序代碼

4?????????? 設計欠當的關聯,有助于使用文檔的方式記錄表間的關系

但是以上的好處,需要數據庫服務器為執行此類檢查花費額外的開銷,增加了數據庫服務器的負擔,進而影響數據庫的性能。

如果在表中不需要外鍵,也想避免引用完整性的檢查,則可以選擇使用MyISAM存儲

引擎。對于那些只有insert和select的應用程序,選擇MyISAM會獲得更好的性能。但是如果使用MyISAM引擎時,如果有外鍵關聯,那么需要再應用程序級的層面上處理這類關聯,使得數據的完整性獲得保證。

DBA(數據庫管理員)要創建拓撲關聯,這樣會導致恢復單個表變的困難(加載依賴其他表的表時,MySQL允許你臨時禁止外鍵檢查,從而降低了該難度)。對于存在外鍵的表的,需要注意這個問題。

總結

以上是生活随笔為你收集整理的mysql myisam 支持事务吗_第三章(附)mysql表类型MyISAM和InnoDB区别(决定了是否支持事务)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。