วิธีรับขนาดฐานข้อมูล mysql


542

วิธีการรับขนาดของฐานข้อมูล mysql?
สมมติว่าฐานข้อมูลเป้าหมายเรียกว่า "v3"


สำหรับขนาดของฐานข้อมูลตาราง / เฉพาะที่เฉพาะเจาะจงสคริปต์ที่ให้ไว้ที่นี่จะช่วยให้ข้อมูลที่มีการคำนวณจากตาราง information_schema.tables ดูรายละเอียดของคำตอบที่นี่rathishkumar.in/2017/12/...
Rathish

คำตอบ:


1185

เรียกใช้แบบสอบถามนี้และคุณอาจได้สิ่งที่คุณต้องการ:

SELECT table_schema "DB Name",
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

แบบสอบถามนี้มาจากฟอรัม mysqlซึ่งมีคำแนะนำที่ครอบคลุมกว่านี้


4
แม้หลังจากที่ฉันลบข้อมูลส่วนใหญ่ออกจากตารางในฐานข้อมูลแล้วขนาดก็ยังคงเดิม
Vidz

2
@Vidz คุณใช้โปรแกรม InnoDB หากคุณเป็นเช่นนั้นคุณสามารถเพิ่มพื้นที่ว่างจนกว่าคุณจะใช้ file_per_table และปรับเปลี่ยนตาราง
mandza

5
โปรดทราบว่าวิธีนี้จะไม่ส่งคืนฐานข้อมูลใด ๆ ที่ว่างเปล่าอย่างน้อยต้องมีตารางเดียวเพื่อให้ฐานข้อมูลปรากฏในผลลัพธ์
v010dya

13
ในการเลือกจากฐานข้อมูลเดียวให้เพิ่มสิ่งนี้ระหว่างบรรทัดFROMและGROUP: where table_schema='DATABASE_NAME'- แทนที่DATABASE_NAMEด้วยฐานข้อมูลของคุณ
KJ ราคา

2
หมายเหตุ: MySQL Workbench จะคายSyntax error: {column title} (double quoted text) is not valid input here.ข้อผิดพลาดออกมา ชื่อคอลัมน์ควรอยู่ในเครื่องหมายขีด Database Nameกล่าวคือ
KareemElashmawy

75

สามารถกำหนดได้โดยใช้คำสั่ง MySQL ดังต่อไปนี้

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

ผลลัพธ์

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

รับผลเป็น GB

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
ดี ฉันชอบคำตอบนี้
progfan

31

หรือถ้าคุณใช้phpMyAdminคุณสามารถดูผลรวมของขนาดตารางในส่วนท้ายของstructureแท็บฐานข้อมูลของคุณ ขนาดฐานข้อมูลจริงอาจมากกว่าขนาดนี้เล็กน้อย แต่ดูเหมือนว่าจะสอดคล้องกับtable_schemaวิธีการที่กล่าวถึงข้างต้น

ภาพหน้าจอ:

ป้อนคำอธิบายรูปภาพที่นี่


26

หรือคุณสามารถข้ามไปยังไดเรกทอรีข้อมูลโดยตรงและตรวจสอบขนาดรวมของ v3.myd, v3 myi และ v3 ไฟล์ frm (สำหรับ myisam) หรือ v3.idb & v3.frm (สำหรับ innodb)


7
หมายเหตุ: ไฟล์ ibd มีอยู่เฉพาะเมื่อใช้ innodb_file_per_table
Slashterix

2
คำตอบนี้เฉพาะเจาะจงมากสำหรับเครื่องมือจัดเก็บข้อมูล คำตอบโดย @ brian-willis เหมาะสมกว่า
มนู Manjunath

15

ในการรับผลลัพธ์เป็น MB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

ในการรับผลลัพธ์เป็น GB:

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

11
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

หากไม่ได้ติดตั้งสิ่งนี้สามารถติดตั้งได้โดยการติดตั้งmysql-utilsแพคเกจซึ่งควรได้รับการบรรจุโดยการกระจายที่สำคัญที่สุด


4

เข้าสู่ระบบ MySQL เป็นครั้งแรกโดยใช้

mysql -u username -p

Command to Display ขนาดของฐานข้อมูลเดียวพร้อมกับตารางในหน่วย MB

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

เปลี่ยน database_name เป็นฐานข้อมูลของคุณ

คำสั่งเพื่อแสดงฐานข้อมูลทั้งหมดที่มีขนาดเป็น MB

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.