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

Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情

 更新時間:2022年09月27日 11:21:31   作者:Java面試365  
這篇文章主要介紹了Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情,Mysql常用的存儲引擎如InnoDB、MyISAM采用的是文件存儲,自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢,下面我們一起進入文章學(xué)習(xí)詳細內(nèi)容吧

前言

在Linux中采用文件系統(tǒng)管理磁盤,而Mysql常用的存儲引擎如InnoDB、MyISAM采用的是文件存儲,自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢?下面聊聊

Mysql數(shù)據(jù)目錄

Mysql系統(tǒng)啟動文件(默認my.cnf)中可能會指定Mysql的一個全局系統(tǒng)變量datadir,這個變量可以指定Mysql的數(shù)據(jù)存儲目錄,

如下:

或者采用查詢變量的形式獲取(下面所有演示截圖都是從這個目錄出發(fā))

mysql> show variables like '%datadir%';
+---------------+-------------------------------+
| Variable_name | Value                         |
+---------------+-------------------------------+
| datadir       | /usr/local/mysql-5.7.26/data/ |
+---------------+-------------------------------+
1 row in set (0.00 sec)

數(shù)據(jù)目錄相關(guān)結(jié)構(gòu)

數(shù)據(jù)庫存儲結(jié)構(gòu)

每創(chuàng)建完一個數(shù)據(jù)庫會在預(yù)定義的datadir路徑下創(chuàng)建一個以數(shù)據(jù)庫名同名的文件夾

mysql> create database test_data;
Query OK, 1 row affected (0.00 sec)

創(chuàng)建完test_data文件夾,會在該文件夾下創(chuàng)建一個db.opt的文件,該文件用于存放數(shù)據(jù)庫的屬性如字符集和比較規(guī)則。

有一點我們需要注意系統(tǒng)自帶的數(shù)據(jù)庫有四個分別是mysql(存儲Mysql用戶權(quán)限等信息)、information_schema(其它數(shù)據(jù)庫描述信息)、performance_schema(存儲Mysql運行時狀態(tài)等)、sys(服務(wù)器性能視圖),其中除information_schema外都會創(chuàng)建一個文件夾。

表結(jié)構(gòu)存儲

如給上述創(chuàng)建的test_data數(shù)據(jù)庫新建一個表

CREATE TABLE test_table (
  name varchar(100) DEFAULT NULL
) ENGINE=InnoDB

那么Mysql會在數(shù)據(jù)庫同名文件夾也就是test_data上新建一個同表名的文件test_table.frm,這個文件用于描述表的字段,索引、約束等等

表數(shù)據(jù)存儲

表數(shù)據(jù)存儲不同的存儲引擎,存儲文件是不同的,以常用InnoDB和MyISAM舉例。

InnoDB存儲引擎表數(shù)據(jù)存儲

InnoDB存儲引擎都是以頁為單位管理存儲空間的,一個數(shù)據(jù)頁的大小為16k,而InnoDB為了方便管理引入表空間的概念,一個表空間中可能包含多個數(shù)據(jù)頁,當(dāng)然表空間又分為幾種如下。

系統(tǒng)表空間

從Mysql版本5.5.7到5.6.6之間的版本默認將表數(shù)據(jù)放入系統(tǒng)表空間中,在默認情況下數(shù)據(jù)目錄的位置會自動生成一個文件名為ibdata1的文件,該文件大小為12M,

如下;

這個文件的大小并不是固定的,可以自增長,這意味著該文件存儲不下時可以自動擴充大小。

獨立表空間

在Mysql版本從5.6.6后不再存儲到系統(tǒng)表空間,而是存儲到獨立表空間,獨立意味著表與表之間的數(shù)據(jù)獨立開來,Mysql會為每一個表建立一個獨立的空間,有多少個表就有多少個獨立空間,所以當(dāng)我們執(zhí)行建表語句

-- 默認InnoDB存儲引擎
CREATE TABLE test_table (
  name varchar(100) DEFAULT NULL
) ENGINE=InnoDB

會在當(dāng)前數(shù)據(jù)庫同名的目錄下新建一個同表名的idb文件:

至于用戶想選擇系統(tǒng)表空間還是獨立表空間可以由用戶自己決定,通過修改系統(tǒng)變量innodb_file_per_table就可以實現(xiàn),為0表示使用系統(tǒng)表空間,為1表示使用獨立表空間,這里需要注意的是修改該系統(tǒng)參數(shù)只對新建表生效,至于修改系統(tǒng)參數(shù)之前的表需要手動修改。

MyISAM存儲引擎表數(shù)據(jù)存儲

MyISAM的存儲引擎和InnoDB存儲引擎在文件系統(tǒng)上的最大區(qū)別就是MyISAM將索引和數(shù)據(jù)文件分開,InnoDB強調(diào)的是索引既數(shù)據(jù),就是因為這樣所以MyISAM存儲引擎的表由三個文件描述

  • 表名.frm:描述表結(jié)構(gòu),索引,約束等。
  • 表名.MYD:存儲表數(shù)據(jù)。
  • 表名.MYI:存儲表索引。

如下創(chuàng)建測試表:

CREATE TABLE `test_table_myisam` (
  `name` varchar(100) DEFAULT NULL
) ENGINE=MyISAM

特殊視圖存儲

create view view_test as select * from test_table;

因為視圖本質(zhì)就是虛擬表,僅僅是查詢語句的別名,存儲時不保存視圖的數(shù)據(jù),僅僅只保存視圖的表結(jié)構(gòu),所以創(chuàng)建視圖僅僅會創(chuàng)建一個與視圖同名的frm文件。

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

相關(guān)文章

  • Mysql字符串截取及獲取指定字符串中的數(shù)據(jù)

    Mysql字符串截取及獲取指定字符串中的數(shù)據(jù)

    小編童鞋最近接了一個新需求,需要在MySql的字段中截取一段字符串中的特定字符,下面小編把我的核心代碼分享給大家,對mysql 字符串截取相關(guān)知識感興趣的朋友一起看看吧
    2019-11-11
  • MySQL錯誤提示:sql_mode=only_full_group_by完美解決方案

    MySQL錯誤提示:sql_mode=only_full_group_by完美解決方案

    有時候遇到數(shù)據(jù)庫重復(fù)數(shù)據(jù),需要將數(shù)據(jù)進行分組,并取出其中一條來展示,這時就需要用到group by語句,下面這篇文章主要給大家介紹了關(guān)于MySQL錯誤提示:sql_mode=only_full_group_by的完美解決方案,需要的朋友可以參考下
    2022-10-10
  • jdbc操作數(shù)據(jù)庫的基本流程詳解

    jdbc操作數(shù)據(jù)庫的基本流程詳解

    本篇文章是對jdbc操作數(shù)據(jù)庫的基本流程進行了詳細的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中int最大值深入講解

    MySQL中int最大值深入講解

    這篇文章主要給大家介紹了關(guān)于MySQL中int最大值的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • mysql中將null值轉(zhuǎn)換為0的語句

    mysql中將null值轉(zhuǎn)換為0的語句

    mysql中將null值轉(zhuǎn)換為0的語句,在mysql數(shù)據(jù)庫開發(fā)中,如果后期添加了字段那么這些值為空值null,我們在使用者需要將null轉(zhuǎn)換為0方便后期的控制就需要下面的代碼了。
    2011-02-02
  • mysql 5.7.12 winx64手動安裝教程

    mysql 5.7.12 winx64手動安裝教程

    這篇文章主要為大家詳細介紹了mysql 5.7.12 winx64手動安裝配置方法圖文教程,感興趣的朋友可以參考一下
    2016-12-12
  • MySQL 中 blob 和 text 數(shù)據(jù)類型詳解

    MySQL 中 blob 和 text 數(shù)據(jù)類型詳解

    本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • linux下perl操作mysql數(shù)據(jù)庫(需要安裝DBI)

    linux下perl操作mysql數(shù)據(jù)庫(需要安裝DBI)

    有時候需要perl操作mysql數(shù)據(jù)庫,可以通過DBI實現(xiàn),需要的朋友可以參考下
    2012-05-05
  • MySQL數(shù)據(jù)庫安全秘籍之守護數(shù)據(jù)金庫防火防盜防攻擊

    MySQL數(shù)據(jù)庫安全秘籍之守護數(shù)據(jù)金庫防火防盜防攻擊

    MySQL是許多公司和組織的關(guān)鍵數(shù)據(jù)庫,因此其安全性的重要性如此顯而易見,為了確保MySQL的安全性,需要采取多種措施來增強其安全性,本文給大家介紹MySQL數(shù)據(jù)庫安全秘籍之守護數(shù)據(jù)金庫防火防盜防攻擊,感興趣的朋友一起看看吧
    2023-03-03
  • Mysql數(shù)據(jù)庫定時備份腳本分享

    Mysql數(shù)據(jù)庫定時備份腳本分享

    這篇文章主要分享了Mysql數(shù)據(jù)庫的定時備份腳本,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09

最新評論