MySQL8中的存儲引擎以及文件解析
MySQL存儲引擎以及文件解析
服務(wù)器中的目錄及文件
查看mysql的文件存儲路徑, 除了information_schema這個數(shù)據(jù)庫之外,其他數(shù)據(jù)庫都在當(dāng)前目錄存在文件夾
[root@MiWiFi-R3P-srv mysql]# pwd /var/lib/mysql [root@MiWiFi-R3P-srv mysql]# ll 總用量 188880 -rw-r-----. 1 mysql mysql 56 2月 14 21:09 auto.cnf -rw-r-----. 1 mysql mysql 1954 3月 18 03:49 binlog.000003 -rw-r-----. 1 mysql mysql 179 3月 18 04:40 binlog.000004 -rw-r-----. 1 mysql mysql 156 3月 18 04:41 binlog.000005 -rw-r-----. 1 mysql mysql 48 3月 18 04:41 binlog.index -rw-------. 1 mysql mysql 1680 2月 14 21:09 ca-key.pem -rw-r--r--. 1 mysql mysql 1112 2月 14 21:09 ca.pem -rw-r--r--. 1 mysql mysql 1112 2月 14 21:09 client-cert.pem -rw-------. 1 mysql mysql 1676 2月 14 21:09 client-key.pem -rw-r-----. 1 mysql mysql 196608 3月 18 05:28 '#ib_16384_0.dblwr' -rw-r-----. 1 mysql mysql 8585216 2月 14 21:09 '#ib_16384_1.dblwr' -rw-r-----. 1 mysql mysql 3515 3月 18 04:40 ib_buffer_pool -rw-r-----. 1 mysql mysql 12582912 3月 18 05:26 ibdata1 -rw-r-----. 1 mysql mysql 50331648 3月 18 05:28 ib_logfile0 -rw-r-----. 1 mysql mysql 50331648 2月 14 21:09 ib_logfile1 -rw-r-----. 1 mysql mysql 12582912 3月 18 04:41 ibtmp1 drwxr-x---. 2 mysql mysql 187 3月 18 04:41 '#innodb_temp' drwxr-x---. 2 mysql mysql 143 2月 14 21:09 mysql -rw-r-----. 1 mysql mysql 25165824 3月 18 05:26 mysql.ibd srwxrwxrwx. 1 mysql mysql 0 3月 18 04:41 mysql.sock -rw-------. 1 mysql mysql 5 3月 18 04:41 mysql.sock.lock -rw-r--r--. 1 mysql mysql 7 2月 14 21:09 mysql_upgrade_info srwxrwxrwx. 1 mysql mysql 0 3月 18 04:41 mysqlx.sock -rw-------. 1 mysql mysql 6 3月 18 04:41 mysqlx.sock.lock drwxr-x---. 2 mysql mysql 8192 2月 14 21:09 performance_schema -rw-------. 1 mysql mysql 1680 2月 14 21:09 private_key.pem -rw-r--r--. 1 mysql mysql 452 2月 14 21:09 public_key.pem -rw-r--r--. 1 mysql mysql 1112 2月 14 21:09 server-cert.pem -rw-------. 1 mysql mysql 1680 2月 14 21:09 server-key.pem drwxr-x---. 2 mysql mysql 48 2月 21 21:15 sharding_order drwxr-x---. 2 mysql mysql 28 2月 14 21:09 sys -rw-r-----. 1 mysql mysql 16777216 3月 18 05:28 undo_001 -rw-r-----. 1 mysql mysql 16777216 3月 18 05:28 undo_002 drwxr-x---. 2 mysql mysql 22 2月 14 22:53 user_149
進入user_149數(shù)據(jù)庫中查看每一個表對應(yīng)有一個表示獨立表空間 .ibd 結(jié)尾的文件進行存儲
[root@MiWiFi-R3P-srv mysql]# cd user_149/ [root@MiWiFi-R3P-srv user_149]# ll -rw-r-----. 1 mysql mysql 114688 3月 18 05:39 role.ibd -rw-r-----. 1 mysql mysql 114688 2月 21 00:42 user.ibd
存儲引擎
InnoDB存儲引擎模式
表結(jié)構(gòu)
- 為了保存表結(jié)構(gòu),InnoDB在數(shù)據(jù)目錄下對應(yīng)的數(shù)據(jù)庫子目錄下
- 創(chuàng)建了一個專門用于描述表結(jié)構(gòu)的文件 表名.frm
- ps: MySQL8.0中不存在表名.frm(表結(jié)構(gòu)文件),并到了表名.ibd中
表中數(shù)據(jù)和索引
- 含MySQL 5.6.6之后版本中,InnoDB新建表不會默認(rèn)存到系統(tǒng)表空間,默認(rèn)使用獨立表空間
- 系統(tǒng)表空間(system tablespace)
- 默認(rèn)情況下,存放在
ibdata1
文件 - 獨立表空間(file-per-table tablespace)
- 會在數(shù)據(jù)庫子目錄下創(chuàng)建表名.ibd的文件
配置
[server] # 配置系統(tǒng)表空間對應(yīng)文件路徑以及大小,這個文件是自擴展文件。 innodb_data_file_path=data1:512M;data2:512M:autoextend # 配置默認(rèn)表空間 0:代表使用系統(tǒng)表空間; 1:代表使用獨立表空間 innodb_file_per_table=0
MyISAM存儲引擎模式
默認(rèn)是使用InnoDB,需要創(chuàng)表時通過指定引擎
CREATE TABLE `user` ( `id` INT NOT NULL AUTO_INCREMENT, `username` VARCHAR (255) COLLATE utf8mb4_german2_ci DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE = MYISAM DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_german2_ci;
表結(jié)構(gòu)
- MySQL5.7中和InnoDB一樣,存儲在表名.frm中
- MySQL8.0中存儲在表名.xxx.sdi中
表中數(shù)據(jù)和索引
- MyISAM中索引都是二級索引, 數(shù)據(jù)和索引分開存放
- 表名.MYD(MYData)
- ? 數(shù)據(jù)信息文件,存儲數(shù)據(jù)信息
- 表名.MYI(MYIndex)
- ? 存放索引信息文件
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL校對規(guī)則(COLLATION)的具體使用
本文主要介紹了MySQL校對規(guī)則(COLLATION)的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08MySQL重復(fù)數(shù)據(jù)提取最新一條技術(shù)方法詳解
在MySQL數(shù)據(jù)庫中清除重復(fù)數(shù)據(jù)是一項常見的任務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL重復(fù)數(shù)據(jù)提取最新一條的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析
這篇文章主要介紹了數(shù)據(jù)庫中的SELECT語句邏輯執(zhí)行順序分析,并列出了一些例子,需要的朋友可以參考下2014-07-07mysql開啟遠(yuǎn)程連接(mysql開啟遠(yuǎn)程訪問)
開啟MYSQL遠(yuǎn)程連接權(quán)限的方法,大家參考使用吧2013-12-12MySQL中having關(guān)鍵字詳解以及與where的區(qū)別
在MySQL中HAVING和WHERE是用于過濾數(shù)據(jù)的兩個重要的關(guān)鍵字,它們在查詢語句中的位置和功能有所不同,這篇文章主要給大家介紹了關(guān)于MySQL中having關(guān)鍵字詳解以及與where區(qū)別的相關(guān)資料,需要的朋友可以參考下2024-07-07MySQL內(nèi)連接和外連接及七種SQL?JOINS的實現(xiàn)
這篇文章主要介紹了Mysql內(nèi)連接和外連接的區(qū)別以及七種SQL?Joins的實現(xiàn),相信看完這篇文章你對SQL內(nèi)外連接的多表查詢就足夠理解了,需要的朋友可以參考下2023-03-03解析如何使用Zend Framework 連接數(shù)據(jù)庫
本篇文章是對如何使用Zend Framework 連接數(shù)據(jù)庫的方法進行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06