本文目錄一覽:
- 1、MySQL的數據庫文件有幾種?擴展名及作用分別是什麼?
- 2、MYSQL中MyISAM 和InnoDB索引的區別
- 3、Mysql存儲引擎Myisam小結
- 4、數據表是MyISAM格式,是什麼意思
- 5、MySQL中MyISAM和InnoDB的區別
MySQL的數據庫文件有幾種?擴展名及作用分別是什麼?
在MySQL中每一個數據庫都會在定義好(或者默認)的數據目錄下存在一個以數據庫名字命名的文件夾,用來存放該數據庫中各種表數據文件。
1、「.frm」文件 與表相關的元數據(meta)信息都存放在「.frm」文件中,包括表結構的定義信息等。不論是什麼存儲引擎,每一個表都會有一個以表名命名的「.frm」文件。所有的「.frm」文件都存放在所屬數據庫的文件夾下面。
2、「.MYD」文件「 .MYD」文件是MyISAM存儲引擎專用,存放MyISAM表的數據。每一個MyISAM表都會有一個「.MYD」文件與之對應,同樣存放於所屬數據庫的文件夾下,和「.frm」文件在一起。
3、「.MYI」文件 「.MYI」文件也是專屬於MyISAM存儲引擎的,主要存放MyISAM表的索引相關信息。對於MyISAM存儲來說,可以被cache的內容主要就是來源於「.MYI」文件中。每一個MyISAM表對應一個「.MYI」文件,存放於位置和「.frm」以及「.MYD」一樣。
管理工具:
可以使用命令行工具管理 MySQL 數據庫(命令 mysql 和 mysqladmin),也可以從 MySQL 的網站下載圖形管理工具 MySQL Administrator, MySQL Query Browser 和 MySQL Workbench。
phpMyAdmin是由 php 寫成的 MySQ L資料庫系統管理程程序,讓管理者可用 Web 界面管理 MySQL 資料庫。
phpMyBackupPro也是由 PHP 寫成的,可以透過 Web 界面創建和管理數據庫。它可以創建偽 cronjobs,可以用來自動在某個時間或周期備份 MySQL 數據庫。另外,還有其他的 GUI 管理工具,例如 mysql-front 以及 ems mysql manager, navicat等等。
以上內容參考:百度百科-mySQL
MYSQL中MyISAM 和InnoDB索引的區別
MYISAM 表是典型的數據與索引分離存儲,主鍵和二級索引沒有本質區別。比如在 MYISAM 表裡主鍵、唯一索引是一樣的,沒有本質區別。
INNODB 表本身是索引組織表,也就是說索引就是數據。下圖表T1的數據行以聚簇索引的方式展示,非葉子節點保存了主鍵的值,葉子節點保存了主鍵的值以及對應的數據行,並且每個頁有分別指向前後兩頁的指針。
INNODB 表不同於 MYISAM,INNODB 表有自己的數據頁管理,默認 16KB。MYISAM 表數據的管理依賴文件系統,比如文件系統一般默認 4KB,MYISAM的塊大小也是 4KB,MYISAM 表的沒有自己的一套崩潰恢復機制,全部依賴於文件系統。
INNODB 表這樣設計的優點有兩個:
數據按照主鍵順序存儲。主鍵的順序也就是記錄行的物理順序,相比指向數據行指針的存放方式,避免了再次排序。我們知道,排序消耗最大。
2. 兩個葉子節點分別含有指向前後兩個節點的指針,這樣在插入新行或者進行頁分裂時,只需要移動對應的指針即可。
INNODB 二級索引的非葉子節點保存索引的字段值,上圖索引為表 t1 的字段 age。葉子節點含有索引字段值和對應的主鍵值。
這樣做的優點是當出現數據行移動或者數據頁分裂時,避免二級索引不必要的維護工作。當數據需要更新的時候,二級索引不需要重建,只需要修改聚簇索引即可。
但是也有缺點:
1. 二級索引由於同時保存了主鍵值,體積會變大。特別是主鍵設計不合理的時候,比如用 UUID 做主鍵。
2. 對二級索引的檢索需要檢索兩次索引樹。第一次通過檢索二級索引葉子節點,找到過濾行對應的主鍵值;第二次通過這個主鍵的值去聚簇索引中查找對應的行。
Mysql存儲引擎Myisam小結
myisam在mysql5.5之前是默認存儲引擎,從5.5開始mysql的默認存儲引擎為innodb.目前mysql版本myisam仍然有廣泛的應用.mysql的一些系統表和臨時表存儲引擎仍然使用的myisam.這裡的臨時表指的是在查詢過程中對查詢的數據進行排序,分組等操作,數據量超過一定數量時,由查詢優化器建立的臨時表.
myisam每個表都有三個文件組成:
.frm 表結構描述
.MYD 存儲數據
.MYI 存儲索引
myisam存儲引擎的鎖級別為表級鎖,myisam為表級讀共享寫獨佔鎖.myisam讀並不會完全阻塞寫,myisam允許在讀的同時在表的後面追加對應的數據.concurrent_insert控制對應的並發性.
concurrent_insert可以設置為以下3個值:
在5.0之前,myisam只支持文件大小為4G的文件,再次之後支持256TB大小的文件.如果表要大於4G,需要設置MAX_ROWS和AVG_ROW_LENGTH的值.
相對於innodb存儲引擎來說myisam佔用的表空間更加少。myisam支持通過myisampack對單個表做進一步壓縮。通過myisampack進行壓縮,myisampack能過將數據壓縮40%~70%。但是通過myisampack壓縮後的數據該表將變成只讀。壓縮後需要對該表進行檢查,使用工具myisamchk。
myisam存儲引擎不支持事務。update後無需commit將會自動提交,也無法回滾。正是如此,myisam沒有redo log以及undo log文件。在遷移數據對應的表的時候,只需要將對應的表拷貝到目標機器上就可以使用了。但是由於沒有redo log和undo log,這樣容易造成表損壞。
通過check table tablename和repair table tablename兩條命令表進行修護。
myisam含有一些空間函數。一些地理信息系統的空間應用需要使用這種類型的存儲引擎。
數據表是MyISAM格式,是什麼意思
mysql 安裝目錄下的data目錄下。 每個表都作為三個文件存在: 一個格式(描述)文件,—.frm 一個數據文件, —.isd(ISAM)或.MYD(MyISAM) 一個索引文件 —.isd(ISAM)或.MYI(MyISAM)
MySQL中MyISAM和InnoDB的區別
MySQL默認採用的是MyISAM,MyISAM不支持事務,而InnoDB支持。InnoDB的AUT COMMIT默認是打開的,即每條SQL語句會默認被封裝成一個事務,自動提交,這樣會影響速度,所以最好是把多條SQL語句顯示放在begin和commit之間,組成一個事務之後再去提交。
InnoDB支持數據行鎖定,而MyISAM不支持,只支持鎖定整個表。即MyISAM同一個表上的讀鎖和寫鎖是互斥的,MyISAM並發讀寫時如果等待隊列中既有讀請求又有寫請求,默認寫請求的優先級高,即使讀請求先到,所以MyISAM不適用於有大量查詢和修改並存的情況下,這樣會導致查詢進程長時間堵塞;因為MyISAM是鎖表,所以某項讀操作比較耗時會使其他寫進程餓死。
InnoDB支持外鍵,MyISAM不支持;而且InnoDB的主鍵範圍更大,是MyISAM的2倍。
InnoDB不支持全文索引,而MyISAM支持。全文索引是指對char、varchar和text中的每個詞建立倒排序索引;MyISAM的全文索引其實沒有什麼太大用,因為它不支持中文分詞,必須由使用者分詞後加入空格再寫到數據表裡,而且少於4個漢字的詞會和停用詞一樣被忽略掉。
MyISAM支持GIS數據,InnoDB不支持,即MyISAM支持以下空間數據對象:Point、line、Surface等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/270139.html