欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql文件存儲(chǔ)圖文詳解

 更新時(shí)間:2021年06月01日 09:23:11   作者:大將黃猿  
文件存儲(chǔ)是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Mysql文件存儲(chǔ)的相關(guān)資料,需要的朋友可以參考下

什么是文件系統(tǒng)

我們知道像 InnoDB、MyIASM 這樣的存儲(chǔ)引擎都是把表存儲(chǔ)在磁盤上的(持久化)。當(dāng)我們想讀取數(shù)據(jù)的時(shí)候,這些存儲(chǔ)引擎會(huì)從文件系統(tǒng)中把數(shù)據(jù)讀出來返回給我們, 當(dāng)我們想寫入數(shù)據(jù)的時(shí)候,這些存儲(chǔ)引擎會(huì)把這些數(shù)據(jù)又寫回文件系統(tǒng)。

當(dāng)然,MySQL除了存儲(chǔ)實(shí)際的數(shù)據(jù),還存儲(chǔ)了一系列其他的日志,在這些也屬于文件系統(tǒng)。

存儲(chǔ)引擎的落盤文件地址

使用客戶端與服務(wù)器建立連接之后查看這個(gè)系統(tǒng)變量的值就可以了:

show variables like 'datadir';

image.png

當(dāng)然這個(gè)目錄可以通過配置文件進(jìn)行修改,由我們自己進(jìn)行指定。

磁盤文件中的內(nèi)容都是些什么

MySOL 在運(yùn)行過程中都會(huì)產(chǎn)生哪些數(shù)據(jù)呢?當(dāng)然會(huì)包含我們創(chuàng)建的數(shù)據(jù)庫、 表、視圖和觸發(fā)器等用戶數(shù)據(jù),除了這些用戶數(shù)據(jù),為了程序更好的運(yùn)行,MySQL也會(huì)創(chuàng)建一些其他的額外數(shù)據(jù)。

數(shù)據(jù)庫Date目錄下的表信息

每當(dāng)我們使用 CREATE DATABASE 語句創(chuàng)建一個(gè)數(shù)據(jù)庫的時(shí)候,在文件系統(tǒng)上實(shí)際發(fā)生了什么呢?其實(shí)很簡(jiǎn)單,每個(gè)數(shù)據(jù)庫都對(duì)應(yīng)數(shù)據(jù)目錄下的一個(gè)子目錄, 或者說對(duì)應(yīng)一個(gè)文件夾,我們每當(dāng)我們新建一個(gè)數(shù)據(jù)庫時(shí),MySQL 會(huì)幫我們做這兩件事兒:

  • 在數(shù)據(jù)目錄下創(chuàng)建一個(gè)和數(shù)據(jù)庫名同名的子目錄(或者說是文件夾)。
  • 在該與數(shù)據(jù)庫名同名的子目錄下創(chuàng)建一個(gè)名為 db.opt 的文件,這個(gè)文件 中包含了該數(shù)據(jù)庫的各種屬性,比方說該數(shù)據(jù)庫的字符集和比較規(guī)則是個(gè)啥。 比方說我們查看一下在我的計(jì)算機(jī)上當(dāng)前有哪些數(shù)據(jù)庫︰

image.png

可以看到在當(dāng)前有 5 個(gè)數(shù)據(jù)庫,其中 mysqladv 數(shù)據(jù)庫是我們自定義的,其余 4 個(gè)數(shù)據(jù)庫是屬于 MySQL 自帶的系統(tǒng)數(shù)據(jù)庫。我們?cè)倏匆幌聰?shù)據(jù)目錄下的內(nèi)容:

image.png

當(dāng)然這個(gè)數(shù)據(jù)目錄下的文件和子目錄比較多,但是如果仔細(xì)看的話,除了 information_schema 這個(gè)系統(tǒng)數(shù)據(jù)庫外,其他的數(shù)據(jù)庫在數(shù)居目錄下都有對(duì)應(yīng)的 子目錄。這個(gè) information_schema 比較特殊,我們后面再講它的作用。

InnoDB是如何存儲(chǔ)數(shù)據(jù)的

我們的InnoDB在添加一個(gè)數(shù)據(jù)庫,就會(huì)在日志根目錄中添加一個(gè)文件夾。

image.png

每一個(gè)文件夾中又存儲(chǔ)對(duì)應(yīng)的所有表數(shù)據(jù)。每一個(gè)表的數(shù)據(jù)一般根據(jù)以下兩種規(guī)則進(jìn)行劃分:

表結(jié)構(gòu)的定義

我們以自己建立的study庫中的index_condition_pushdown表為例:

image.png

image.png

表結(jié)構(gòu)就是這些數(shù)據(jù),對(duì)應(yīng)存儲(chǔ)的文件名為:

image.png

表結(jié)構(gòu)就是該表的名稱是啥,表里邊有多少列,每個(gè)列的數(shù)據(jù)類型是啥,有啥約束條件和索引,用的是啥字符集和比較規(guī)則各種信息,這些信息都體現(xiàn)在了 我們的建表語句中了。為了保存這些信息,InnoDB 和 MyIASM 這兩種存儲(chǔ)引擎 都在數(shù)據(jù)目錄下對(duì)應(yīng)的數(shù)據(jù)庫子目錄下創(chuàng)建了一個(gè)專門用于描述表結(jié)構(gòu)的文件, 文件名是這樣:表名.frm

表中的數(shù)據(jù)

表所屬數(shù)據(jù)庫對(duì)應(yīng)的子目錄下創(chuàng)建一個(gè)表示該獨(dú)立表空間的文件,文件名和表名相同,只不過添加了一個(gè).ibd 的擴(kuò)展名而已,所以完整的文件名稱長這樣:表名.ibd。

image.png

MyISAM是如何存儲(chǔ)表數(shù)據(jù)的

在 MyISAM 中的數(shù)據(jù)和索引是分開存放的。所以在文件系統(tǒng)中也是使用不同的文件來存儲(chǔ)數(shù)據(jù)文件和索引文件。(相比于InnoDB中,ibd文件存儲(chǔ)了數(shù)據(jù)+索引,MyISAM再次進(jìn)行了拆分)。

image.png

如圖,我們更換存儲(chǔ)引擎。

image.png

文件目錄更換為了上圖??梢院?jiǎn)單理解為將InnoDB的.ibd文件進(jìn)行了拆分,變?yōu)榱艘韵聝蓚€(gè)文件》

.MYD 代表表的數(shù)據(jù)文件。

.MYI 代表表的索引文件。

這里,也就總結(jié)除了InnoDB和MyISAM的一個(gè)重要區(qū)別。就是InnoDB的索引和數(shù)據(jù)都在一個(gè)文件夾中,而MyISAM則是將數(shù)據(jù)文件和索引文件分開存放在兩個(gè)文件中的。

日志文件

在服務(wù)器運(yùn)行過程中,會(huì)產(chǎn)生各種各樣的日志,比如常規(guī)的查詢?nèi)罩尽㈠e(cuò)誤日志、binlog日志、redo 日志、Undo 日志等等,日志文件記錄了影響 MySQL 數(shù)據(jù)庫的各種類型活動(dòng)。 常見的日志文件有:錯(cuò)誤日志(error log)、慢查詢?nèi)罩荆╯low query log)、 查詢?nèi)罩荆╭uery log)、二進(jìn)制文件(bin log)。

錯(cuò)誤日志

錯(cuò)誤日志文件對(duì) MySQL 的啟動(dòng)、運(yùn)行、關(guān)閉過程進(jìn)行了記錄。遇到問題時(shí) 應(yīng)該首先查看該文件以便定位問題。該文件不僅記錄了所有的錯(cuò)誤信息,也記錄一些警告信息或正確的信息用戶可以通過下面命令來查看錯(cuò)誤日志文件的位置:

show variables like 'log_error'\G;

image.png

當(dāng) MySQL 不能正常啟動(dòng)時(shí),第一個(gè)必須查找的文件應(yīng)該就是錯(cuò)誤日志文件, 該文件記錄了錯(cuò)誤信息。

慢查詢?nèi)罩?/strong>

慢查詢?nèi)罩究梢詭椭ㄎ豢赡艽嬖趩栴}的 SQL 語句,從而進(jìn)行 SQL 語句層面的優(yōu)化。

查詢?nèi)罩?/strong>

查詢?nèi)罩居涗浟怂袑?duì) MySQL 數(shù)據(jù)庫請(qǐng)求的信息,無論這些請(qǐng)求是否得到了正確的執(zhí)行。

默認(rèn)文件名:主機(jī)名.log

image.png

從 MySQL 5.1 開始,可以將查詢?nèi)罩镜挠涗浄湃?mysql 架構(gòu)下的 general_log表

image.png

二進(jìn)制日志(binlog)

image.png

二進(jìn)制日志記錄了對(duì) MySQL 數(shù)據(jù)庫執(zhí)行更改的所有操作,若操作本身沒有 導(dǎo)致數(shù)據(jù)庫發(fā)生變化,該操作可能也會(huì)寫入二進(jìn)制文件。但是不包括 select 和 show 這類操作(因?yàn)檫@些操作對(duì)數(shù)據(jù)本身不會(huì)進(jìn)行修改)

binlog幾種作用

恢復(fù)(recovery)

某些數(shù)據(jù)的恢復(fù)需要二進(jìn)制日志。

復(fù)制

其原理與恢復(fù)類似,通過復(fù)制和執(zhí)行二進(jìn)制日志使一 臺(tái)遠(yuǎn)程的 MySQL 數(shù)據(jù)庫(一般稱為 slave 或 standby)與一臺(tái) MySQL 數(shù)據(jù)庫(一 般稱為 master 或 primary)進(jìn)行實(shí)時(shí)同步。

審計(jì)(有點(diǎn)冷門,db負(fù)責(zé))

用戶可以通過二進(jìn)制日志中的信息來進(jìn)行審計(jì),判斷是否有對(duì)數(shù)據(jù)庫進(jìn)行注入的攻擊。

總結(jié)

到此這篇關(guān)于Mysql文件存儲(chǔ)的文章就介紹到這了,更多相關(guān)Mysql文件存儲(chǔ)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL編碼不一致可能引起的一些問題

    MySQL編碼不一致可能引起的一些問題

    這篇文章主要給大家介紹了關(guān)于MySQL編碼不一致可能引起的一些問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于一致性hash算法(consistent hashing)的使用詳解

    基于一致性hash算法(consistent hashing)的使用詳解

    本篇文章對(duì)一致性hash算法(consistent hashing)的使用進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • Mysql8.0遞歸查詢的簡(jiǎn)單用法示例

    Mysql8.0遞歸查詢的簡(jiǎn)單用法示例

    在項(xiàng)目中會(huì)遇到同一個(gè)表中保存著父子關(guān)系的數(shù)據(jù),最常見的就是處理樹形結(jié)構(gòu)資源,這篇文章主要給大家介紹了關(guān)于Mysql8.0遞歸查詢的簡(jiǎn)單用法,需要的朋友可以參考下
    2021-08-08
  • MySQL系列之七 MySQL存儲(chǔ)引擎

    MySQL系列之七 MySQL存儲(chǔ)引擎

    存儲(chǔ)引擎是數(shù)據(jù)庫的核心,對(duì)于mysql來說,存儲(chǔ)引擎是以插件的形式運(yùn)行的。雖然mysql支持種類繁多的存儲(chǔ)引擎,但是常用的就那么幾種。這篇文章主要給大家介紹MySQL存儲(chǔ)引擎的相關(guān)知識(shí),一起看看吧
    2021-07-07
  • 登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法

    登錄mysql報(bào)錯(cuò)Can‘t connect to MySQL server&n

    這篇文章主要給大家介紹了登錄mysql報(bào)錯(cuò) Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)解決方法,文中有詳細(xì)的解決步驟,需要的朋友可以參考下
    2023-09-09
  • MySQL的WHERE語句中BETWEEN與IN的使用教程

    MySQL的WHERE語句中BETWEEN與IN的使用教程

    這篇文章主要介紹了MySQL的WHERE語句中BETWEEN與IN的使用教程,是MySQL入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-12-12
  • MySql 5.7.17免安裝配置教程詳解

    MySql 5.7.17免安裝配置教程詳解

    這篇文章給大家詳細(xì)介紹了MySql 5.7.17免安裝配置教程,首先大家需要先下載mysql 5.7.17 的安裝包,然后解壓,具體配置過程大家通過本文一起學(xué)習(xí)吧
    2017-03-03
  • Idea連接MySQL數(shù)據(jù)庫出現(xiàn)中文亂碼的問題

    Idea連接MySQL數(shù)據(jù)庫出現(xiàn)中文亂碼的問題

    這篇文章主要介紹了Idea連接MySQL數(shù)據(jù)庫出現(xiàn)中文亂碼的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • 免安轉(zhuǎn)MySQL服務(wù)的啟動(dòng)與停止方法

    免安轉(zhuǎn)MySQL服務(wù)的啟動(dòng)與停止方法

    免安轉(zhuǎn)MySQL服務(wù)的啟動(dòng)與停止方法,可以不用安裝解壓以后即可執(zhí)行,對(duì)于老手推薦,新手建議用安裝版本。
    2011-03-03
  • 深入淺析MySQL COLUMNS分區(qū)

    深入淺析MySQL COLUMNS分區(qū)

    COLUMN分區(qū)是5.5開始引入的分區(qū)功能,只有RANGE COLUMN和LIST COLUMN這兩種分區(qū);支持整形、日期、字符串;RANGE和LIST的分區(qū)方式非常的相似。下面就兩者的區(qū)別給大家介紹下,對(duì)mysql columns知識(shí)感興趣的朋友一起看看吧
    2016-11-11

最新評(píng)論