數據庫-元數據表

1. 什么是元數據表

元數據:數據的數據,用以描述數據的信息也是數據,被稱為元數據

2. 獲取元數據的方法

MySQL提供了以下三種方法用于獲取數據庫對象的元數據:

  • show語句

  • 從INFORMATION_SCHEMA數據庫里查詢相關表(information_schema是一個虛擬數據庫,并不物理存在,它儲存數據的信息的數據庫)

  • 命令行程序,如mysqlshow, mysqldump

3. SHOW語句獲取元數據

語句作用
show databases列出所有數據庫
show create database db_name查看數據庫的DDL
show tables列出默認數據庫的所有表
show tables from db_name列出指定數據庫的所有表
show table status查看表的描述性信息
show table status from db_name查看表的描述性信息
show create table tbl_name查看表的DDL
show columns from tbl_name查看列信息
show index from tbl_name查看索引信息

?

示例:

  1. 有幾種show語句還可以帶有一條like 'pattern'字句,用來限制語句的輸出范圍,其中'pattern'允許包含'%'和'_'通配符,比如下面這條語句返回domaininfo表中以s開頭的所有列:

SHOW COLUMNS FROM t_student LIKE 's%'; ?(EXPLAIN t_student;)

? ? ?2.查看表的描述信息

SHOW TABLE STATUS FROM test LIKE 't_student'

    • Name * 作用:顯示表的名稱。這是用于唯一標識數據庫中的每個表,通過表名可以在后續的查詢、修改等操作中準確地引用該表 * 示例:如果有一個名為customers的表,在SHOW TABLE STATUS的結果中,Name列會顯示customers,可以通過這個名稱來明確是針對哪個表的信息

    • Engine

      • 作用:表示表所使用的存儲引擎。常見的存儲引擎有 InnoDB、MyISAM 等。不同的存儲引擎具有不同的特性,例如 InnoDB 支持事務處理和外鍵約束,而 MyISAM 在一些簡單的讀寫場景下可能具有更高的性能。

      • 示例:若Engine列顯示為InnoDB,說明該表使用 InnoDB 存儲引擎,這意味著在這個表上可以進行事務操作,如使用START TRANSACTIONCOMMITROLLBACK語句來控制數據的一致性

    • Version

      • 作用:存儲表的版本信息。這個版本信息通常是由 MySQL 內部用于管理表結構的更新和變化等情況,一般用戶很少直接使用這個列的值

      • 示例:在 MySQL 進行表結構升級等操作時,Version列的值可能會發生改變,以記錄表的更新次數或版本號等相關信息

    • Row_format

      • 作用:指定表中行的存儲格式。常見的行格式有 Compact、Dynamic 等。不同的行格式在存儲效率和數據處理方式上有所不同。例如,Compact 格式對于存儲空間的利用較為高效,而 Dynamic 格式在處理可變長度列較多的情況下可能更靈活

      • 示例:如果Row_format列顯示為Compact,說明該表的行采用 Compact 格式存儲,這種格式會對數據進行緊湊的存儲,減少存儲空間的占用,特別是對于包含變長字段(如 VARCHAR 類型)的表

    • Rows

      • 作用:這是一個估計值,表示表中的行數。需要注意的是,這個值可能不是完全精確的,尤其是在對表進行頻繁的插入、刪除等操作后,MySQL 可能沒有及時更新這個估計值

      • 示例:如果Rows列顯示為1000,這大致表示該表中可能有 1000 行數據。可以用這個值來初步了解表的規模,例如在對數據量較大的表進行查詢優化時,會考慮這個因素

    • Avg_row_length

      • 作用:計算表中平均每行的長度(字節數)。這個值是通過表的總字節數除以估計的行數得到的。它可以幫助你了解數據在表中的存儲密度等信息

      • 示例:如果Avg_row_length列顯示為100字節,且Rows列顯示為1000,那么可以大致估計出該表占用的存儲空間約為100×1000 = 100000字節

    • Data_length

      • 作用:表示表的數據部分的長度(字節數),即存儲表中實際數據所占用的空間大小。這個值不包括索引等其他部分的存儲空間

      • 示例:若Data_length列顯示為50000字節,這就是表中數據本身占用的空間大小,可以用來評估數據存儲的規模和效率

    • Max_data_length

      • 作用:指定表所能容納的最大數據長度(字節數)。這個限制取決于表的存儲引擎和配置等因素。例如,對于某些存儲引擎,這個值可能受到文件系統的文件大小限制或者存儲引擎本身的內部限制

      • 示例:如果Max_data_length列顯示為1073741824字節(1GB),這表示在當前存儲引擎和配置下,該表最多可以存儲 1GB 的數據部分,超過這個限制可能需要考慮對表進行優化或者擴展存儲

    • Index_length

      • 作用:表示表中索引部分的長度(字節數)。索引是用于提高查詢速度的一種數據結構,這個列的值可以幫助你了解索引占用的存儲空間情況

      • 示例:若Index_length列顯示為20000字節,這說明表的索引總共占用了 20000 字節的存儲空間。可以通過這個值與數據長度等進行比較,來評估索引的規模是否合理

    • Data_free

      • 作用:顯示表中已經分配但目前尚未使用的空間(字節數)。這部分空間可以用于后續的數據插入等操作,直到用完后可能需要重新分配空間

      • 示例:如果Data_free列顯示為1000字節,這表示表中有 1000 字節的空間已經分配但還沒有被數據占用,可以用于存儲新插入的數據

    • Auto_increment

      • 作用:如果表中有一個自增列(通常是一個整數類型的主鍵),這個列會顯示自增列的下一個可用值。它用于自動為新插入的行生成唯一的標識符

      • 示例:假設表中有一個名為id的自增主鍵列,Auto_increment列顯示為101,這意味著下一次插入新行時,id列的值將自動設置為 101

    • Create_time

      • 作用:記錄表的創建時間。這個時間戳可以幫助你了解表的歷史,例如在進行數據庫備份策略或者數據遷移計劃時,可以參考這個時間來確定表的新舊程度

      • 示例:如果Create_time列顯示為2024-01-01 10:00:00,這表示該表是在 2024 年 1 月 1 日 10 點創建的

    • Update_time

      • 作用:表示表的最后更新時間。這個更新可能是因為數據的插入、刪除或者修改等操作導致的。通過這個時間可以了解表中數據的活躍度

      • 示例:若Update_time列顯示為2024-02-01 14:00:00,這意味著表中的數據最后一次更新是在 2024 年 2 月 1 日 14 點,可以用來判斷數據是否是最新的,或者是否需要重新緩存表的數據等

    • Check_time

      • 作用:用于存儲表最后一次檢查(如完整性檢查)的時間。這個功能在一些存儲引擎(如 MyISAM)中有更明顯的體現,對于維護表的數據質量很重要

      • 示例:在 MyISAM 存儲引擎下,如果Check_time列顯示為2024-03-01 16:00:00,這表示該表最后一次完整性檢查是在 2024 年 3 月 1 日 16 點

    • Collation

      • 作用:指定表所使用的字符集校對規則。字符集校對規則決定了字符的比較和排序方式。例如,utf8_general_ci是一種常用的校對規則,其中ci表示不區分大小寫

      • 示例:如果Collation列顯示為utf8_general_ci,說明在這個表中,字符數據(如 VARCHAR 類型的列)在進行比較和排序操作時,會按照不區分大小寫的utf8字符集規則來執行

    • Checksum

      • 作用:存儲表的校驗和信息(如果有的話)。校驗和用于驗證表數據的完整性,不過并不是所有的存儲引擎都支持或者啟用這個功能

      • 示例:對于支持校驗和的存儲引擎,在數據完整性檢查等操作中,可以參考Checksum列的值來判斷數據是否被篡改或者損壞

    • Create_options

      • 作用:顯示創建表時使用的額外選項。這些選項可能包括存儲引擎特定的設置、表的分區設置等其他特殊的配置信息

      • 示例:如果表是分區表,Create_options列可能會顯示分區的相關信息,如分區的類型(范圍分區、列表分區等)和分區的表達式等內容

    • Comment

      • 作用:可以用于存儲對表的注釋信息。這是一個自定義的字段,開發人員或者數據庫管理員可以在這里添加對表的功能、用途等方面的說明

      • 示例:如果在創建表時添加了注釋,如COMMENT = 'This table stores customer information',那么在SHOW TABLE STATUSComment列就會顯示This table stores customer information

4. INFORMATION_SCHEMA查詢相關表

INFORMATION_SCHEMA是MySQL自帶的一個系統數據庫,它里面存儲了所有的元數據,通過select里面的相關表就可以獲取你想要的元數據。和show語句相比,它比較麻煩,但它的好處是標準的SQL語句,更具有可移植性,且更靈活,可以通過各種表達式獲取你真正需要的信息。information_schema是一個虛擬數據庫,并不物理存在,在select的時候,從其他數據庫獲取相應的信息

  1. 以下的語句可以查出超過1000行數據的表

?SELECT CONCAT(table_schema,'.',table_name) AS table_name,table_rows ?
FROM information_schema.tables?
WHERE table_rows > 1000?
ORDER BY table_rows DESC;?

?

查詢所有沒有主鍵的表 ?

SELECT CONCAT(t.table_name,".",t.table_schema) AS table_name ?
FROM information_schema.TABLES t ?
LEFT JOIN information_schema.TABLE_CONSTRAINTS tc ?
ON t.table_schema = tc.table_schema ?
AND t.table_name = tc.table_name ?
AND tc.constraint_type = 'PRIMARY KEY' ?
WHERE tc.constraint_name IS NULL ?
AND t.table_type = 'BASE TABLE';??

?

查詢5個最大表 ?

SELECT?
TABLE_NAME,
CONCAT(ROUND((DATA_LENGTH + INDEX_LENGTH)/(1024*1024),2),'MB') AS total_size
FROM?
information_schema.TABLES
WHERE?
TABLE_SCHEMA = 'mysql' ?-- 將'your_database_name'替換為實際的數據庫名
ORDER BY?
total_size DESC
LIMIT 5;?

獲取指定數據庫占用的磁盤空間 ?

SELECT CONCAT(ROUND(SUM(DATA_LENGTH + INDEX_LENGTH)/(1024*1024), 2), 'MB') AS database_size
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'test';?

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

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

相關文章

【STM32】通用定時器PWM

STM32 通用定時器 PWM 輸出完全解析(以 TIM3_CH1 為例) PWM 輸出基本原理 PWM(Pulse Width Modulation)即脈沖寬度調制,是由定時器通過比較 CNT 與 CCR 寄存器實現的。 信號產生原理: ARR 決定周期&#…

python學習打卡:DAY 21 常見的降維算法

知識點回顧: LDA線性判別PCA主成分分析t-sne降維 還有一些其他的降維方式,也就是最重要的詞向量的加工,我們未來再說 浙大疏錦行

基于SpringBoot和Leaflet集成在線天氣服務的區縣當前天氣WebGIS實戰

目錄 前言 一、需求描述 1、功能需求 2、技術實現流程 二、SpringBoot后臺實現 1、控制層實現 2、區縣數據返回 三、WebGIS前端實現 1、區位信息展示 2、天氣信息展示 四、成果展示 1、魔都上海 2、蜀地成都 3、湖南桂東 五、總結 前言 在當今數字化時…

文心開源:文心大模型4.5系列全面開放,AI普惠時代加速到來

一場由4240億參數模型領銜的開源盛宴,正在重塑中國AI生態的底層邏輯 2025年6月30日,百度如約宣布全面開源其旗艦產品——文心大模型4.5系列。一次性開源10款模型,覆蓋從4240億參數的MoE多模態巨無霸到輕巧的0.3B端側模型,并同步開…

【運算放大器專題】基礎篇

1.1 運算放大器是放大了個寂寞嗎?—初識運算放大器 為了解決震蕩問題,人為加了一些補償網絡之后導致的高頻特性差 1.2歐姆定律和獨立源 1正弦2方波3脈沖 電壓源是平行于i軸的橫線 1.3有伴源和運放緩沖器 有伴指的是有電阻,有伴是壞事&#…

英偉達 jetson nano 從NFS啟動,使用英偉達提供的rootfs根文件系統

0、目標 為了方便驅動階段的開發,并且使用英偉達提供的上層應用,這里希望使jetson nano 從NFS啟動,同時使用英偉達提供的rootfs根文件系統。 1、硬件準備 確保jetson nano 板子和開發主機之間使用網線進行連接(保持板子和開發主…

廣州華銳互動:以創新科技賦能教育,開啟沉浸式學習?

在教育領域,廣州華銳互動致力于打破傳統教學的局限性,為師生們帶來全新的沉浸式學習體驗。廣州華銳互動通過開發 VR 虛擬教學課件,將抽象的知識轉化為生動、逼真的虛擬場景,讓學生能夠身臨其境地感受知識的魅力 。比如在歷史課上&…

Grok 4 最新技術評測與發布指南

TL;DR:馬斯克跳過Grok 3.5直接發布Grok 4,計劃在7月4日后上線,專注編程模型優化,這次"極限迭代"能否讓馬斯克在AI軍備競賽中翻盤? 📋 文章目錄 🚀 Grok 4發布概況🏆 Grok…

為什么音視頻通話需要邊緣加速

? 主要原因 ? 降低傳輸延遲 用戶與邊緣節點之間通常1-2跳即可完成連接,避免跨國、跨運營商長鏈路傳輸 保障音視頻信令、媒體流快速到達,控制端到端延遲 ? 提升弱網環境下的連接穩定性 邊緣節點具備鏈路優化、丟包補償、轉發中繼功能 即使在WiFi切…

小架構step系列05:Springboot三種運行模式

1 概述 前面搭建工程的例子,運行的是一個桌面程序,并不是一個Web程序,在這篇中我們把它改為Web程序,同時從啟動角度看看它們的區別。 2 Web模式 2.1 桌面例子 回顧一下前面的例子,其pom.xml的配置如下:…

LoRaWAN的設備類型有哪幾種?

LoRaWAN(Long Range Wide Area Network)是一種專為物聯網(IoT)設備設計的低功耗、長距離通信協議。它根據設備的功能和功耗需求,將設備分為三種類型:Class A、Class B 和 Class C。每種設備類型都有其獨特的…

三維目標檢測|Iou3D 代碼解讀一

本文對OpenPCDet項目中的iou3d模塊中的iou3d_nms_kernel.cu代碼進行解讀,本次解決的函數是box_overlap,它的輸入是兩個包圍盒,輸出是兩個包圍盒在bev下的重疊面積,計算流程是 確定box_a和box_b的四個角落坐標 從包圍盒中提取坐標值…

探索實現C++ STL容器適配器:優先隊列priority_queue

前引: 在算法競賽中,選手們常常能在0.01秒內分出勝負;在實時交易系統中,毫秒級的延遲可能意味著數百萬的盈虧;在高并發服務器中,每秒需要處理數萬條不同優先級的請求——這些系統背后,都隱藏著同…

一、Dify 私有部署、本地安裝教程(LInux-openeuler)

官網:Dify AI Plans and Pricing 1.找到下載的位置。 2.可以切換文檔為中午文檔。 3.本次安裝使用Docker Compose 安裝,可以大致看一下文檔描述的配置信息要求。 4.各個版本信息,本次下載1.5.1版本,你也可以選擇安裝其他版本。 …

GASVM+PSOSVM+CNN+PSOBPNN+BPNN軸承故障診斷

一、各算法基本原理與技術特點 1. GASVM(遺傳算法優化支持向量機) 原理: 利用遺傳算法(GA)優化SVM的超參數(如懲罰因子 C C C 和核函數參數 g g g)。遺傳算法通過模擬自然選擇機制&#xff…

Python實例練習---魔法方法

(主頁有對應知識點^V^) 【練習要求】 針對知識點Python面向對象的魔法方法安排的本實例。要求實現:用__init__魔法方法定義書的長,寬,高,最后用__str__輸出返回值 【重要步驟提示】 定義class書類 2、使…

【從0-1的CSS】第3篇:盒子模型與彈性布局

文章目錄 盒子模型內容區content內邊距padding邊框border外邊距margin元素的寬度高度box-sizing屬性content-box:設置的width和height就是內容區的width和heightborder-box:設置的width和height是context padding border的width和height 彈性布局Flex容器的屬性fl…

設置LInux環境變量的方法和區別_Ubuntu/Centos

Linux環境變量可以通過export實現,也可以通過修改幾個文件來實現 1 通過文件設置LInux環境變量 首先是設置全局環境變量,對所有用戶都會生效 /etc/profile:該文件為系統的每個用戶設置環境信息,當用戶登錄時,該文件…

python緩存裝飾器實現方案

寫python的時候突然想著能不能用注解于是就寫了個這個 文章目錄 原始版改進點 原始版 import os import pickle import hashlib import inspect import functoolsdef _generate_cache_filename(func, *args, **kwargs):"""生成緩存文件名的內部函數""…

使用 java -jar xxxx.jar 運行 jar 包報錯: no main manifest attribute

1、問題描述 在Linux服務器上本想運行一下自己寫的一個JAR,但是報錯了! no main manifest attribute, in first-real-server-1.0-SNAPSHOT.jar 2、解決辦法 在自己的Spring項目的啟動類(xxx.xxx.xxx.XXXXApplication)所在的Mo…