mysql中的數(shù)據(jù)目錄用法及說(shuō)明
1、背景
安裝mysql之后,在安裝目錄下會(huì)有一個(gè)data目錄,我們創(chuàng)建的數(shù)據(jù)庫(kù)、創(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ù)目錄
可以通過(guò)sql命令來(lái)查找數(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ù)庫(kù):
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 4 rows in set (0.01 sec)
查詢結(jié)果有4個(gè)可以發(fā)現(xiàn)除了data目錄下除了沒(méi)有名為information_schema的目錄,其它三個(gè)數(shù)據(jù)庫(kù)都存在同名的目錄,其它三個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)就存在對(duì)應(yīng)的同名目錄里,只是information_schema比較特殊。
接下來(lái)我們創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù):
mysql> create database test;
然后可以發(fā)現(xiàn)data目錄下多了一個(gè)test的空目錄,里面啥也沒(méi)有,每創(chuàng)建一個(gè)數(shù)據(jù)庫(kù),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è)頁(yè),我們的數(shù)據(jù)都在頁(yè)上。
以前版本的mysql默認(rèn)使用的是系統(tǒng)表空間,也就是所有表數(shù)據(jù)和信息存儲(chǔ)到一個(gè)公共的地方,對(duì)應(yīng)著數(shù)據(jù)目錄data下的ibdata1文件,這個(gè)文件大小和路徑還有名稱(chēng)都是可以在配置文件修改的。
有的版本還會(huì)把表結(jié)構(gòu)信息單獨(dú)存儲(chǔ)到表名.frm里,和存儲(chǔ)數(shù)據(jù)文件分開(kāi)。
接下來(lái)再創(chuàng)建一個(gè)MyISAM存儲(chǔ)引擎的表來(lái)看看有什么區(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ù)庫(kù)的用戶記錄是存儲(chǔ)在哪些目錄哪些文件里的,注意不同版本的數(shù)據(jù)庫(kù)存儲(chǔ)的文件是有區(qū)別的,不過(guò)都大差不差,了解一下就行。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL索引類(lèi)型Normal、Unique和Full Text的講解
今天小編就為大家分享一篇關(guān)于MySQL索引類(lèi)型Normal、Unique和Full Text的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03Centos7.5安裝mysql5.7.24二進(jìn)制包方式部署
這篇文章主要介紹了Centos7.5安裝mysql5.7.24二進(jìn)制包方式部署,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-12-12MySQL查詢字段為NULL、不為NULL的數(shù)據(jù)問(wèn)題
介紹了MySQL查詢字段為NULL和不為NULL的數(shù)據(jù)時(shí)需要注意的幾點(diǎn),包括查詢語(yǔ)句的編寫(xiě)和NULL與其他字符的操作,通過(guò)實(shí)際操作對(duì)比,指出使用IS NOT NULL可以正確查詢到非NULL字段的數(shù)據(jù)2025-02-02與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(八)--插入 更新 刪除
這一篇《與MSSQL對(duì)比學(xué)習(xí)MYSQL的心得(八)》將會(huì)講解MYSQL的插入、更新和刪除語(yǔ)句2014-08-08mysql下怎樣運(yùn)行腳本以運(yùn)行niuzi.sql為例
mysql下運(yùn)行腳本,有兩種方法,都是在命令行下進(jìn)行的,需要的朋友可以記錄下2014-07-07