亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mysql文件存儲圖文詳解

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

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

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

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

存儲引擎的落盤文件地址

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

show variables like 'datadir';

image.png

當然這個目錄可以通過配置文件進行修改,由我們自己進行指定。

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

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

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

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

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

image.png

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

image.png

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

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

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

image.png

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

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

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

image.png

image.png

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

image.png

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

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

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

image.png

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

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

image.png

如圖,我們更換存儲引擎。

image.png

文件目錄更換為了上圖??梢院唵卫斫鉃閷nnoDB的.ibd文件進行了拆分,變?yōu)榱艘韵聝蓚€文件》

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

.MYI 代表表的索引文件。

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

日志文件

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

錯誤日志

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

show variables like 'log_error'\G;

image.png

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

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

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

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

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

默認文件名:主機名.log

image.png

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

image.png

二進制日志(binlog)

image.png

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

binlog幾種作用

恢復(fù)(recovery)

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

復(fù)制

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

審計(有點冷門,db負責)

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    Mysql8.0遞歸查詢的簡單用法示例

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

    MySQL系列之七 MySQL存儲引擎

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

    登錄mysql報錯Can‘t connect to MySQL server&n

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

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

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

    MySql 5.7.17免安裝配置教程詳解

    這篇文章給大家詳細介紹了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)中文亂碼的問題,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 免安轉(zhuǎn)MySQL服務(wù)的啟動與停止方法

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

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

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

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

最新評論