深入理解InnoDB(5)-文件系統

1. 數據庫和文件系統的關系

像 InnoDB 、 MyISAM 這樣的存儲引擎都是把表存儲在文件系統上的。當我們想讀取數據的時候,這些存儲引擎會從文件系統中把數據讀出來返回給我們,當我們想寫入數據的時候,這些存儲引擎會把這些數據又寫回文件系統。

2.MySQL數據目錄

區別于MySQL安裝目錄(安裝目錄存儲了許多控制服務器和客戶端程序的命令),數據目錄是用來存儲MySQL在運行過程中產生的數據

2.1 查找MySQL數據目錄的位置

因為數據目錄是記錄在系統變量’datadir’中的,因此直接輸入命令就在找到

mysql> SHOW VARIABLES LIKE 'datadir';

image.png

2.2 數據目錄的結構

已知數據目錄位置,我們創建的數據庫就會在該文件夾下面生成一個同名子目錄并在這個子目錄下創建一個名為db.opt的文件,這個文件包含該數據庫的各種屬性,如字符集/比較規則等

如下圖為數據庫tcc—cap目錄下的內容,它包含表結構的定義和表數據

image.png

2.3 文件系統中InnoDB表的表示

對于 InnoDB 存儲引擎的數據表,一個表對應兩個文件,一個是 *.frm,存儲表結構信息;一個是 *.ibd,存儲表中數據

2.4 存儲表數據

InnoDB中的數據是以頁為基本單位的,為了更好的管理這些頁,MySQL引入了表空間,它可以對應文件系統上一個或多個真實文件。每一個表空間可以被劃分為很多很多很多個頁,我們的表數據就存放在某個表空間下的某些頁里。

2.4.1 系統表空間

默認情況下,InnoDB會在數據目錄下創建一個名為ibdata1、大小為12M的文件,這個文件就是對應的系統表空間在文件系統上的表示。

在一個MySQL服務器中,系統表空間只有一份。從MySQL5.5.7到MySQL5.6.6之間的各個版本中,我們表中的數據都會被默認存儲到這個 系統表空間。

2.4.2 獨立表空間

在MySQL5.6.6以及之后的版本中,InnoDB并不會默認的把各個表的數據存儲到系統表空間中,而是為每一個表建立一個獨立表空間,也就是說我們創建了多少個表,就有多少個獨立表空間。使用獨立表空間來存儲表數據的話,會在該表所屬數據庫對應的子目錄下創建一個表示該獨立表空間的文件,文件名和表名相同,只不過添加了一個.ibd的擴展名而已

image.png

2.5 文件系統中MyISAM表的表示

因為該存儲引擎的數據和索引是分開存放的。所以在文件系統中也是使用不同的文件來存儲數據文件和索引文件。而且和InnoDB不同的是,MyISAM并沒有什么所謂的表空間一說,表數據都存放到對應的數據庫子目錄下

因此在構成上,MyISAM需要比innoDB多一個文件,并且文件的后綴名也與innoDB存在區別:

  • test.frm
  • test.MYD
  • test.MYI

2.6 文件系統中視圖的表示

因為視圖實際上是一種虛擬的表,并沒有實際數據的存在,因此只需要用一個*.frm文件存儲在對應的數據庫子目錄即可。

2.7 數據目錄下的其他的文件

  • 服務器進程文件。

我們知道每運行一個MySQL服務器程序,都意味著啟動一個進程。MySQL服務器會把自己的進程ID寫入到一個文件中。

  • 服務器日志文件。

在服務器運行過程中,會產生各種各樣的日志,也需要被存儲。

  • 默認/自動生成的SSL和RSA證書和密鑰文件。

3.文件系統對數據庫的影響

  • 文件名長度的影響
    數據庫產生的文件,文件名受限于文件系統支持的最大長度
  • 文件大小的影響
    對于數據庫中的文件,它們受限于文件系統所支持的最大文件大小
  • 特殊字符的影響
    為了避免因為數據庫名和表名出現某些特殊字符而造成文件系統不支持的情況,MySQL會把數據庫名和表名中所有除數字和拉丁字母以外的所有字符在文件名里都映射成 @+編碼值的形式作為文件名。

4.MySQL系統數據庫

MySQL會默認存在幾個系統數據庫

image.png

  1. information_schema
  • information_schema提供了訪問數據庫元數據的方式。(元數據是關于數據的數據,如數據庫名或表名,列的數據類型,或訪問權限等。有時用于表述該信息的其他術語包括“數據詞典”和“系統目錄”。)
  • 換句換說,information_schema是一個信息數據庫,它保存著關于MySQL服務器所維護的所有其他數據庫的信息。(如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。) 在INFORMATION_SCHEMA中,有幾張只讀表。它們實際上是視圖,而不是基本表。
  • 查看具體表:

image.png

  1. mysql
  • mysql的核心數據庫,類似于sql server中的master表,主要負責存儲數據庫的用戶、權限設置、關鍵字等mysql自己需要使用的控制和管理信息。(常用的,在mysql.user表中修改root用戶的密碼)。
  1. performance_schema
  • 主要用于收集數據庫服務器性能參數。并且庫里表的存儲引擎均為PERFORMANCE_SCHEMA,而用戶是不能創建存儲引擎為PERFORMANCE_SCHEMA的表。MySQL5.7默認是開啟的。
  1. sys
  • Sys庫所有的數據源來自:performance_schema。目標是把performance_schema的把復雜度降低,讓DBA能更好的閱讀這個庫里的內容。讓DBA更快的了解DB的運行情況。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391167.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391167.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391167.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vim捐贈_#PayItBackwards-一位freeCodeCamp畢業生如何向事業捐贈10,000美元

vim捐贈On Monday my phone suddenly started buzzing. Shawn Wang, AKA Swyx, had just tweeted about a donation hed made to freeCodeCamp.org.星期一,我的電話突然開始嗡嗡作響。 Awn Swyx的Shawn Wang剛剛在推特上發布了他對freeCodeCamp.org的捐款。 I glan…

Digital River拉來Netconcepts站臺 亞太營銷服務升級

它是大洋彼岸的一家網絡軟件下載、分銷商,很多重量級的軟件行業領軍企業都是其客戶,它一直低調摸索亞太營銷的路子,在今年九月份,它一改常態,高調宣布入華,三個月后,它帶來了最新消息&#xff1…

按下按鈕_按下

按下按鈕Updated with the latest data: 23/8/2020更新最新數據:23/8/2020 As restrictions are lifted for Laois and Offaly, difficult times are set to continue for the people of Kildare, at least for another couple of weeks, as they continue to fight…

windows中怎么添加定時任務

linux中有crontab定時任務,很方便 其實windows也有類似的 需求:定時執行python腳本 1、Windows鍵R,調出此窗口,輸入compmgmt.msc 2、 轉載于:https://www.cnblogs.com/gcgc/p/11594467.html

css設置黑體宋體等(轉)

代碼如下: .selector{ font-family:"Microsoft YaHei",微軟雅黑,"MicrosoftJhengHei",華文細黑,STHeiti,MingLiu } 說明: 加上中文名“微軟雅黑”是為了兼容opera。 MicrosoftJhengHei為微軟正黑體,STHeiti為華文黑體,Mi…

重學TCP協議(7) Timestamps 選項

1.Timestamps 選項的組成部分 時間戳選項占10個字節 kind(1字節) + length(1字節) info (8字節),其中kind8,length10,info由timestamp(TS value)和timestamp echo(TS Echo Reply)兩…

sudoku代碼_首席執行官可以編碼嗎? 在星期六晚上坐在酒吧時,從頭開始觀看Netlify首席執行官的Sudoku應用程序代碼

sudoku代碼Netlify CEO Matt Biilmann live-codes a Sudoku app using Netlify in this tutorial video. Matt shows how simple and quick it can be to create a working app using the JAMstack.在本教程視頻中,Netlify CEO Matt Biilmann使用Netlify對Sudoku應用…

c++ 時間序列工具包_我的時間序列工具包

c 時間序列工具包When it comes to time series forecasting, I’m a great believer that the simpler the model, the better.關于時間序列預測,我堅信模型越簡單越好。 However, not all time series are created equal. Some time series have a strongly defi…

bash 的相關配置

bash 參數自動補全 請安裝 bash-completion bash 提示符 說明:參考文檔 1. 簡潔風格 if [[ ${EUID} 0 ]] ; then PS1\[\033[01;32m\][\[\033[01;35m\]\u\[\033[01;37m\] \w\[\033[01;32m\]]\$\[\033[00m\] else PS1\[\033[01;32m\][\u\[\033[01;37m\] \w\[\033[01;…

LINUX系統安裝和管理

目錄 一.應用程序 對比應用程序與系統命令的關系 典型應用程序的目錄結構 常見的軟件包裝類型 二.RPM軟件包管理 1.RPM是什么? 2.RPM命令的格式 查看已安裝的軟件包格式 查看未安裝的軟件包 3.RPM安裝包從哪里來? 4.掛載的定義 掛載命令moun…

sql基礎教程亞馬遜_針對Amazon,Apple,Google的常見SQL面試問題

sql基礎教程亞馬遜SQL is used in a wide variety of programming jobs. Its important to be familiar with SQL if you are going to be interviewing soon for a software position. This is especially true if you are going to interview at a top tech company such as …

leetcode 1720. 解碼異或后的數組(位運算)

未知 整數數組 arr 由 n 個非負整數組成。 經編碼后變為長度為 n - 1 的另一個整數數組 encoded ,其中 encoded[i] arr[i] XOR arr[i 1] 。例如,arr [1,0,2,1] 經編碼后得到 encoded [1,2,3] 。 給你編碼后的數組 encoded 和原數組 arr 的第一個元…

adobe 書簽怎么設置_讓我們設置一些規則…沒有Adobe Analytics處理規則

adobe 書簽怎么設置Originally published at Analyst Admin.最初發布于Analyst Admin 。 In my experience working with Adobe Analytics, I’ve found that Processing Rules help in some cases, but oftentimes they create more work. I try to avoid using Processing R…

詳解linux下安裝python3環境

1、下載python3.5源碼包首先去python官網下載python3的源碼包,網址:https://www.python.org/ 進去之后點擊導航欄的Downloads,也可以鼠標放到Downloads上彈出菜單選擇Source code,表示源碼包,這里選擇最新版本3.5.2&am…

詳解spl_autoload_register()函數

http://blog.csdn.net/panpan639944806/article/details/23192267 轉載于:https://www.cnblogs.com/maidongdong/p/7647163.html

上海區塊鏈會議演講ppt_所以您想參加會議演講嗎? 這是我的建議。

上海區塊鏈會議演講pptYou’ve attended a few conferences, watched a lot of presentations, and decided it’s time to give a talk of your own! As someone who has both given talks at conferences, and sat on the proposal review board for others, I’m here to te…

重學TCP協議(8) TCP的11種狀態

TCP的11種狀態 為了邏輯更加清晰,假設主動打開連接和關閉連接皆為客戶端,被動打開連接和關閉連接皆為服務端 客戶端獨有的:(1)SYN_SENT (2)FIN_WAIT1 (3)FIN_WAIT2 &…

肯尼亞第三方支付_肯尼亞的COVID-19病例正在Swift增加,我們不知道為什么。

肯尼亞第三方支付COVID-19 cases in Kenya are accelerating rapidly. New cases have increased 300% month-over-month since April of this year while global and regional media have reported on the economic toll of stringent lock-down measures and heavy-handed go…

JVM命令

1、jps 查看所有虛擬機進程 -v 虛擬機啟動時JVM參數 -l 執行主類全名 2、jstat 顯示本地或遠程類裝載、內存、垃圾回收、JIT編譯等運行數據(性能問題定位工具首選) 格式:jstat [-option] vmid ms count (示例&a…

Java 集合 List Arrays.asList

2019獨角獸企業重金招聘Python工程師標準>>> 參考鏈接:阿里巴巴Java開發手冊終極版v1.3.0 【強制】使用工具類 Arrays.asList()把數組轉換成集合時,不能使用其修改集合相關的方 法,它的 add/remove/clear 方法會拋出 UnsupportedO…