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

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

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

前言

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

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

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

如下:

或者采用查詢變量的形式獲?。ㄏ旅嫠醒菔窘貓D都是從這個(gè)目錄出發(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ù)庫(kù)存儲(chǔ)結(jié)構(gòu)

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

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

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

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

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

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

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

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

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

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

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

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

系統(tǒng)表空間

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

如下;

這個(gè)文件的大小并不是固定的,可以自增長(zhǎng),這意味著該文件存儲(chǔ)不下時(shí)可以自動(dòng)擴(kuò)充大小。

獨(dú)立表空間

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

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

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

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

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

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

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

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

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

特殊視圖存儲(chǔ)

create view view_test as select * from test_table;

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

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

相關(guān)文章

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

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

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

    MySQL錯(cuò)誤提示:sql_mode=only_full_group_by完美解決方案

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

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

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

    MySQL中int最大值深入講解

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

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

    mysql中將null值轉(zhuǎn)換為0的語(yǔ)句,在mysql數(shù)據(jù)庫(kù)開發(fā)中,如果后期添加了字段那么這些值為空值null,我們?cè)谑褂谜咝枰獙ull轉(zhuǎn)換為0方便后期的控制就需要下面的代碼了。
    2011-02-02
  • mysql 5.7.12 winx64手動(dòng)安裝教程

    mysql 5.7.12 winx64手動(dòng)安裝教程

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

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

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

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

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

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

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

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

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

最新評(píng)論