MySQL8中的存儲引擎以及文件解析
更新時間:2023年09月05日 09:09:46 作者:wangJiaLun-china
這篇文章主要介紹了MySQL8中的存儲引擎以及文件使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
MySQL存儲引擎以及文件解析
服務器中的目錄及文件
查看mysql的文件存儲路徑, 除了information_schema這個數據庫之外,其他數據庫都在當前目錄存在文件夾
[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數據庫中查看每一個表對應有一個表示獨立表空間 .ibd 結尾的文件進行存儲
[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存儲引擎模式
表結構
- 為了保存表結構,InnoDB在數據目錄下對應的數據庫子目錄下
- 創(chuàng)建了一個專門用于描述表結構的文件 表名.frm
- ps: MySQL8.0中不存在表名.frm(表結構文件),并到了表名.ibd中
表中數據和索引
- 含MySQL 5.6.6之后版本中,InnoDB新建表不會默認存到系統表空間,默認使用獨立表空間
- 系統表空間(system tablespace)
- 默認情況下,存放在
ibdata1
文件 - 獨立表空間(file-per-table tablespace)
- 會在數據庫子目錄下創(chuàng)建表名.ibd的文件
配置
[server] # 配置系統表空間對應文件路徑以及大小,這個文件是自擴展文件。 innodb_data_file_path=data1:512M;data2:512M:autoextend # 配置默認表空間 0:代表使用系統表空間; 1:代表使用獨立表空間 innodb_file_per_table=0
MyISAM存儲引擎模式
默認是使用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;
表結構
- MySQL5.7中和InnoDB一樣,存儲在表名.frm中
- MySQL8.0中存儲在表名.xxx.sdi中
表中數據和索引
- MyISAM中索引都是二級索引, 數據和索引分開存放
- 表名.MYD(MYData)
- ? 數據信息文件,存儲數據信息
- 表名.MYI(MYIndex)
- ? 存放索引信息文件
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MySQL校對規(guī)則(COLLATION)的具體使用
本文主要介紹了MySQL校對規(guī)則(COLLATION)的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08MySQL中having關鍵字詳解以及與where的區(qū)別
在MySQL中HAVING和WHERE是用于過濾數據的兩個重要的關鍵字,它們在查詢語句中的位置和功能有所不同,這篇文章主要給大家介紹了關于MySQL中having關鍵字詳解以及與where區(qū)別的相關資料,需要的朋友可以參考下2024-07-07