mysql中的數據目錄用法及說明
1、背景
安裝mysql之后,在安裝目錄下會有一個data目錄,我們創(chuàng)建的數據庫、創(chuàng)建的表、插入的數據都是存儲在這個目錄中,可以大概了解一下這個目錄下是怎么存儲數據的。
2、版本
mysql> status -------------- E:\mysql_install\mysql\bin\mysql.exe Ver 8.0.40 for Win64 on x86_64 (MySQL Community Server - GPL)
3、數據目錄
可以通過sql命令來查找數據目錄,命令如下:
mysql> show variables like 'datadir'; +---------------+------------------------------+ | Variable_name | Value | +---------------+------------------------------+ | datadir | E:\mysql_install\mysql\Data\ | +---------------+------------------------------+ 1 row in set, 1 warning (0.00 sec)
再看看這個目錄有哪些文件:
$ 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
看一下有哪些數據庫:
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
查詢結果有4個可以發(fā)現除了data目錄下除了沒有名為information_schema的目錄,其它三個數據庫都存在同名的目錄,其它三個數據庫的數據就存在對應的同名目錄里,只是information_schema比較特殊。
接下來我們創(chuàng)建一個新的數據庫:
mysql> create database test;
然后可以發(fā)現data目錄下多了一個test的空目錄,里面啥也沒有,每創(chuàng)建一個數據庫,data目錄下就會多一個同名的目錄:
$ 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ā)現test目錄下產生了一個test1.ibd的二進制文件:
$ ll E:\\mysql_install\\mysql\\Data\\test\\ total 192 -rw-r--r-- 1 xxx 1049089 147456 1月 15 10:11 test1.ibd
我們的表結構信息和插入此表的數據都存在這個文件中,這個文件也可以叫做獨立表空間,里面存儲多個頁,我們的數據都在頁上。
以前版本的mysql默認使用的是系統(tǒng)表空間,也就是所有表數據和信息存儲到一個公共的地方,對應著數據目錄data下的ibdata1文件,這個文件大小和路徑還有名稱都是可以在配置文件修改的。
有的版本還會把表結構信息單獨存儲到表名.frm里,和存儲數據文件分開。
接下來再創(chuàng)建一個MyISAM存儲引擎的表來看看有什么區(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ā)現生成了與test2相關的3個文件,這3個文件的作用分別為:
test2.MYD:存放數據信息test2.MYI:存放索引信息test2_366.sdi:存放表結構信息
有的版本表結構信息是存儲在表名.frm文件中。
4、總結
本文大概講了一下我們插入數據庫的用戶記錄是存儲在哪些目錄哪些文件里的,注意不同版本的數據庫存儲的文件是有區(qū)別的,不過都大差不差,了解一下就行。
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Windows下通過MySQL Installer安裝MySQL服務的教程圖解
MYSQL官方提供了Installer方式安裝MYSQL服務以及其他組件,使的Windows下安裝,卸載,配置MYSQL變得特別簡單。接下來通過圖文并茂的形式給大家介紹Windows下通過MySQL Installer安裝MySQL服務的教程,一起看看吧2018-10-10
mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法
這篇文章主要介紹了mysql創(chuàng)建的外鍵無法保存的原因以及處理辦法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-09-09
Mysql學習之創(chuàng)建和操作數據庫及表DDL大全小白篇
本篇文章是MySQL小白入門篇,主要講解創(chuàng)建和操縱數據庫及表懂得了,內容非常全面,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09

