mysql中的數(shù)據(jù)目錄用法及說明
1、背景
安裝mysql之后,在安裝目錄下會(huì)有一個(gè)data目錄,我們創(chuàng)建的數(shù)據(jù)庫、創(chuàng)建的表、插入的數(shù)據(jù)都是存儲(chǔ)在這個(gè)目錄中,可以大概了解一下這個(gè)目錄下是怎么存儲(chǔ)數(shù)據(jù)的。
2、版本
mysql> status -------------- E:\mysql_install\mysql\bin\mysql.exe Ver 8.0.40 for Win64 on x86_64 (MySQL Community Server - GPL)
3、數(shù)據(jù)目錄
可以通過sql命令來查找數(shù)據(jù)目錄,命令如下:
mysql> show variables like 'datadir'; +---------------+------------------------------+ | Variable_name | Value | +---------------+------------------------------+ | datadir | E:\mysql_install\mysql\Data\ | +---------------+------------------------------+ 1 row in set, 1 warning (0.00 sec)
再看看這個(gè)目錄有哪些文件:
$ ls E:\\mysql_install\\mysql\\Data\\ '#ib_16384_0.dblwr' A030414-NC.err A030414-NC-bin.000003 ca.pem ib_buffer_pool mysql.ibd server-cert.pem undo_001 '#ib_16384_1.dblwr' A030414-NC.pid A030414-NC-bin.index ca-key.pem ibdata1 performance_schema/ server-key.pem undo_002 '#innodb_redo'/ A030414-NC-bin.000001 A030414-NC-slow.log client-cert.pem ibtmp1 private_key.pem sys/ '#innodb_temp'/ A030414-NC-bin.000002 auto.cnf client-key.pem mysql/ public_key.pem
看一下有哪些數(shù)據(jù)庫:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
查詢結(jié)果有4個(gè)可以發(fā)現(xiàn)除了data目錄下除了沒有名為information_schema的目錄,其它三個(gè)數(shù)據(jù)庫都存在同名的目錄,其它三個(gè)數(shù)據(jù)庫的數(shù)據(jù)就存在對(duì)應(yīng)的同名目錄里,只是information_schema比較特殊。
接下來我們創(chuàng)建一個(gè)新的數(shù)據(jù)庫:
mysql> create database test;
然后可以發(fā)現(xiàn)data目錄下多了一個(gè)test的空目錄,里面啥也沒有,每創(chuàng)建一個(gè)數(shù)據(jù)庫,data目錄下就會(huì)多一個(gè)同名的目錄:
$ ll E:\\mysql_install\\mysql\\Data\\test total 0
再創(chuàng)建一張InnoDB的表看看:
mysql> use test;
Database changed
mysql> CREATE TABLE test1
-> (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> str1 VARCHAR(255) NOT NULL DEFAULT '',
-> str2 VARCHAR(255),
-> str3 CHAR(5),
-> str4 VARCHAR(255),
-> str5 CHAR(10),
-> INDEX idx_str1 (str1),
-> INDEX idx_str4_str5 (str4, str5)
-> ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
Query OK, 0 rows affected (0.05 sec)
可以發(fā)現(xiàn)test目錄下產(chǎn)生了一個(gè)test1.ibd的二進(jìn)制文件:
$ ll E:\\mysql_install\\mysql\\Data\\test\\ total 192 -rw-r--r-- 1 xxx 1049089 147456 1月 15 10:11 test1.ibd
我們的表結(jié)構(gòu)信息和插入此表的數(shù)據(jù)都存在這個(gè)文件中,這個(gè)文件也可以叫做獨(dú)立表空間,里面存儲(chǔ)多個(gè)頁,我們的數(shù)據(jù)都在頁上。
以前版本的mysql默認(rèn)使用的是系統(tǒng)表空間,也就是所有表數(shù)據(jù)和信息存儲(chǔ)到一個(gè)公共的地方,對(duì)應(yīng)著數(shù)據(jù)目錄data下的ibdata1文件,這個(gè)文件大小和路徑還有名稱都是可以在配置文件修改的。
有的版本還會(huì)把表結(jié)構(gòu)信息單獨(dú)存儲(chǔ)到表名.frm里,和存儲(chǔ)數(shù)據(jù)文件分開。
接下來再創(chuàng)建一個(gè)MyISAM存儲(chǔ)引擎的表來看看有什么區(qū)別:
mysql> CREATE TABLE test2
-> (
-> id INT AUTO_INCREMENT PRIMARY KEY,
-> str1 VARCHAR(255) NOT NULL DEFAULT '',
-> str2 VARCHAR(255),
-> str3 CHAR(5),
-> str4 VARCHAR(255),
-> str5 CHAR(10),
-> INDEX idx_str1 (str1),
-> INDEX idx_str4_str5 (str4, str5)
-> ) ENGINE = MyISAM DEFAULT CHARSET = utf8;
Query OK, 0 rows affected, 1 warning (0.02 sec)
查看data目錄下test目錄下有哪些文件:
$ ll -a E:\\mysql_install\\mysql\\Data\\test\\ total 212 drwxr-xr-x 1 xxx 1049089 0 1月 15 10:57 ./ drwxr-xr-x 1 xxx 1049089 0 1月 15 09:59 ../ -rw-r--r-- 1 xxx 1049089 147456 1月 15 10:41 test1.ibd -rw-r--r-- 1 xxx 1049089 0 1月 15 10:57 test2.MYD -rw-r--r-- 1 xxx 1049089 4096 1月 15 10:57 test2.MYI -rw-r--r-- 1 xxx 1049089 7733 1月 15 10:57 test2_366.sdi
發(fā)現(xiàn)生成了與test2相關(guān)的3個(gè)文件,這3個(gè)文件的作用分別為:
test2.MYD:存放數(shù)據(jù)信息test2.MYI:存放索引信息test2_366.sdi:存放表結(jié)構(gòu)信息
有的版本表結(jié)構(gòu)信息是存儲(chǔ)在表名.frm文件中。
4、總結(jié)
本文大概講了一下我們插入數(shù)據(jù)庫的用戶記錄是存儲(chǔ)在哪些目錄哪些文件里的,注意不同版本的數(shù)據(jù)庫存儲(chǔ)的文件是有區(qū)別的,不過都大差不差,了解一下就行。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL聯(lián)合索引與最左匹配原則的實(shí)現(xiàn)
最左匹配原則在我們MySQL開發(fā)過程中和面試過程中經(jīng)常遇到,為了加深印象和理解,我在這里把MySQL的最左匹配原則詳細(xì)的講解一下,感興趣的可以了解一下2023-12-12
mysql技巧:提高插入數(shù)據(jù)(添加記錄)的速度
這篇文章主要介紹了mysql技巧:提高插入數(shù)據(jù)(添加記錄)的速度,需要的朋友可以參考下2014-12-12
Windows下通過MySQL Installer安裝MySQL服務(wù)的教程圖解
MYSQL官方提供了Installer方式安裝MYSQL服務(wù)以及其他組件,使的Windows下安裝,卸載,配置MYSQL變得特別簡(jiǎn)單。接下來通過圖文并茂的形式給大家介紹Windows下通過MySQL Installer安裝MySQL服務(wù)的教程,一起看看吧2018-10-10
MySQL的DELETE(刪除數(shù)據(jù))用法解讀
本文將詳細(xì)介紹DELETE語句的基本語法、高級(jí)用法、性能優(yōu)化策略以及注意事項(xiàng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法
這篇文章主要介紹了mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
Mysql學(xué)習(xí)之創(chuàng)建和操作數(shù)據(jù)庫及表DDL大全小白篇
本篇文章是MySQL小白入門篇,主要講解創(chuàng)建和操縱數(shù)據(jù)庫及表懂得了,內(nèi)容非常全面,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09

