Xin chào Tôi mới sử dụng cơ sở dữ liệu. Tôi đang làm việc trên cơ sở dữ liệu khổng lồ và cố gắng dọn dẹp đống lộn xộn. Tôi muốn bắt đầu bằng cách tìm mười bảng hàng đầu chiếm bộ nhớ cao nhất trong toàn bộ cơ sở dữ liệu. Tôi không thể đi bằng cách tìm bộ nhớ của mỗi bảng vì có quá nhiều bảng. Tôi cần 10 hoặc 20 bảng hàng đầu chiếm không gian tối đa. Bất kì sự trợ giúp nào đều được đánh giá cao. Cảm ơn bạn.Làm thế nào để tìm ra các bảng chiếm bộ nhớ tối đa trong cơ sở dữ liệu?
Trả lời
MyISAM chỉ chiếm bộ nhớ cho chỉ số của nó
Để tìm 10 bảng MyISAM hàng đầu mà có thể sử dụng bộ nhớ nhất trong trường hợp xấu nhất thử điều này:
SELECT * FROM
(
SELECT table_schema,table_name,index_length
FROM information_schema.tables
WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')
ORDER BY index_length DESC
) LIMIT 10;
InnoDB chiếm bộ nhớ cho dữ liệu của nó và lập chỉ mục
Để tìm 10 bảng InnoDB hàng đầu mà có thể sử dụng bộ nhớ nhất trong trường hợp xấu nhất thử điều này:
SELECT * FROM
(
SELECT table_schema,table_name,data_length+index_length tblsize
FROM information_schema.tables
WHERE engine='InnoDB'
ORDER BY index_length DESC
) LIMIT 10;
Dưới đây là một hiển thị của 50 bảng đầu bởi kích thước giảm dần
SELECT * FROM
(SELECT TN TableName,LPAD(REPLACE(FORMAT(TS/POWER(1024,1),2),',',''),Z,' ') KB,
LPAD(REPLACE(FORMAT(TS/POWER(1024,2),2),',',''),Z,' ') MB,
LPAD(REPLACE(FORMAT(TS/POWER(1024,3),2),',',''),Z,' ') GB
FROM (SELECT CONCAT(table_schema,'.',table_name) TN,
(data_length+index_length) TS FROM information_schema.tables
WHERE table_schema NOT IN ('information_schema','mysql','performance_schema')
AND engine IS NOT NULL) A,(SELECT 13 Z) B ORDER BY TS DESC) MMM LIMIT 50;
Nếu bạn quan tâm, tôi có thắc mắc mà cung cấp cho bạn toàn bộ câu chuyện trên MySQL Instance
truy vấn này cho bạn thấy số tiền không gian đĩa được thực hiện bởi Storage Engine trong GB
SELECT IFNULL(B.engine,'Total') "Storage Engine",
CONCAT(LPAD(REPLACE(FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Data Size",
CONCAT(LPAD(REPLACE(FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size", CONCAT(LPAD(REPLACE(
FORMAT(B.TSize/POWER(1024,pw),3),',',''),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY engine WITH ROLLUP) B,(SELECT 3 pw) A ORDER BY TSize;
truy vấn này cho bạn thấy dung lượng đĩa được thực hiện bởi cơ sở dữ liệu trong GB
SELECT DBName,CONCAT(LPAD(FORMAT(SDSize/POWER(1024,pw),3),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Data Size",CONCAT(LPAD(FORMAT(SXSize/
POWER(1024,pw),3),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size",
CONCAT(LPAD(FORMAT(STSize/POWER(1024,pw),3),17,' '),' ',
SUBSTR(' KMGTP',pw+1,1),'B') "Total Size" FROM
(SELECT IFNULL(DB,'All Databases') DBName,SUM(DSize) SDSize,
SUM(XSize) SXSize,SUM(TSize) STSize FROM (SELECT table_schema DB,
data_length DSize,index_length XSize,data_length+index_length TSize
FROM information_schema.tables WHERE table_schema NOT IN
('mysql','information_schema','performance_schema')) AAA
GROUP BY DB WITH ROLLUP) AA,(SELECT 3 pw) BB ORDER BY (SDSize+SXSize);
truy vấn này cho bạn thấy dung lượng đĩa được thực hiện bởi cơ sở dữ liệu bằng cách Storage Engine trong GB
SELECT IF(ISNULL(B.table_schema)+ISNULL(B.engine)=2,"Storage for All Databases",
IF(ISNULL(B.table_schema)+ISNULL(B.engine)=1,CONCAT("Storage for ",B.table_schema),
CONCAT(B.engine," Tables for ",B.table_schema))) Statistic,CONCAT(LPAD(REPLACE(
FORMAT(B.DSize/POWER(1024,pw),3),',',''),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B')
"Data Size",CONCAT(LPAD(REPLACE(FORMAT(B.ISize/POWER(1024,pw),3),',',''),17,' '),
' ',SUBSTR(' KMGTP',pw+1,1),'B') "Index Size",CONCAT(LPAD(REPLACE(FORMAT(B.TSize/
POWER(1024,pw),3),',',''),17,' '),' ',SUBSTR(' KMGTP',pw+1,1),'B') "Table Size"
FROM (SELECT table_schema,engine,SUM(data_length) DSize,SUM(index_length) ISize,
SUM(data_length+index_length) TSize FROM information_schema.tables WHERE
table_schema NOT IN ('mysql','information_schema','performance_schema')
AND engine IS NOT NULL GROUP BY table_schema,engine WITH ROLLUP) B,
(SELECT 3 pw) A ORDER BY TSize;
Ba truy vấn trước đó tôi đã đăng có một đặc điểm chung: subquery (SELECT 3 pw)
- Nếu bạn sử dụng
(SELECT 0 pw)
, báo cáo nằm trong Bytes - Nếu bạn sử dụng
(SELECT 1 pw)
, báo cáo ở KiloBytes - Nếu bạn sử dụng
(SELECT 2 pw)
, báo cáo là bằng megabyte - Nếu bạn sử dụng
(SELECT 3 pw)
, báo cáo là trong gigabyte - Nếu bạn sử dụng
(SELECT 4 pw)
, báo cáo được trong terabyte - Nếu bạn sử dụng
(SELECT 5 pw)
, báo cáo là trong petabytes (Nếu bạn cần này, đăng kết quả đó xin vui lòng !!!)
Điều này thật tuyệt vời !! Bạn thật tuyệt vời! Nó đã giúp tôi rất nhiều !! .. :) – Maddy
Bạn nên đăng câu hỏi như thế này trong dba.stackexchange.com. Tôi cũng đang ở trong diễn đàn đó. – RolandoMySQLDBA
Bạn được chào đón !!! – RolandoMySQLDBA
Có lẽ một cái gì đó như thế này:
SELECT CONCAT(table_schema, '.', table_name),
CONCAT(ROUND(table_rows/1000000, 2), 'M') rows,
CONCAT(ROUND(data_length/(1024 * 1024 * 1024), 2), 'G') DATA,
CONCAT(ROUND(index_length/(1024 * 1024 * 1024), 2), 'G') idx,
CONCAT(ROUND((data_length + index_length)/(1024 * 1024 * 1024), 2), 'G') total_size,
ROUND(index_length/data_length, 2) idxfrac
FROM information_schema.TABLES
ORDER BY data_length + index_length DESC
LIMIT 10;
Reference here
Bạn có thể sử dụng SHOW TABLE STATUS để có được kích thước cho mỗi bảng.
Đây là truy vấn tôi đã sử dụng sau khi đọc tất cả câu trả lời của bạn.
SELECT table_name,round((data_length+index_length)/(1024 * 1024 *1024),2) table_size
FROM information_schema.tables
ORDER BY data_length + index_length
DESC limit 10;
+1 để sử dụng câu trả lời của tôi để xây dựng bạn sở hữu – RolandoMySQLDBA
- 1. Đa hình trong các bảng cơ sở dữ liệu SQL?
- 2. cơ sở dữ liệu trong bộ nhớ trong Python
- 3. Làm thế nào để sao chép một bảng sqlite từ cơ sở dữ liệu đĩa vào cơ sở dữ liệu bộ nhớ trong python?
- 4. Số lượng hàng tối đa trong bảng cơ sở dữ liệu MS Access?
- 5. Cơ sở dữ liệu HSQL 100% trong bộ nhớ
- 6. Lưu vào đĩa cơ sở dữ liệu trong bộ nhớ
- 7. Cách tối ưu hóa phân trang cho lớn trong cơ sở dữ liệu bộ nhớ
- 8. Làm thế nào để hạn chế cơ sở dữ liệu bung ra đĩa?
- 9. Kết nối tối đa cho cơ sở dữ liệu sqlite3
- 10. Cách lấy ID tối đa từ bảng cơ sở dữ liệu trong mã java
- 11. Kích thước tối đa của cơ sở dữ liệu SQLite trong bộ nhớ của ứng dụng Android?
- 12. Đường ray có trong cơ sở dữ liệu bộ nhớ
- 13. Làm cách nào để mở tệp cơ sở dữ liệu trong bộ nhớ vào sqlite3
- 14. Làm thế nào để xóa tất cả các bảng trong cơ sở dữ liệu MySQL?
- 15. Làm thế nào để theo dõi các yêu cầu SQL cho cơ sở dữ liệu trong bộ nhớ H2?
- 16. Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu MySQL
- 17. Làm thế nào để tìm từ có thể xảy ra tối đa từ văn bản?
- 18. Làm cách nào để tạo cơ sở dữ liệu trong bộ nhớ sqlite?
- 19. Làm cách nào để xóa cơ sở dữ liệu SQLite trong bộ nhớ bằng PHP PDO?
- 20. Làm thế nào để thả tất cả các bảng trong cơ sở dữ liệu mà không làm rơi cơ sở dữ liệu?
- 21. Tối đa hai bộ dữ liệu
- 22. Làm thế nào để thực hiện các mối liên hệ đa hình trong cơ sở dữ liệu hiện có
- 23. Kích thước bảng tối đa cho cơ sở dữ liệu MySQL
- 24. Hình ảnh cơ sở dữ liệu bộ nhớ đệm MVC
- 25. RDS Bộ nhớ cơ sở dữ liệu hết dung lượng
- 26. Làm cách nào để đặt kích thước cơ sở dữ liệu tối đa khi sử dụng Khuôn khổ thực thể?
- 27. Tìm kiếm cơ sở dữ liệu cục bộ cho D2009 +
- 28. Làm thế nào để sao chép dữ liệu từ cơ sở dữ liệu/bảng này sang cơ sở dữ liệu/bảng khác
- 29. Làm thế nào để lưu trữ dữ liệu đồ thị trong cơ sở dữ liệu?
- 30. Làm thế nào để xóa một hàng trong một bảng cơ sở dữ liệu sqlite?
Bạn có muốn tiêu thụ bộ nhớ hoặc dung lượng đĩa không ??? – RolandoMySQLDBA
Tôi muốn dung lượng đĩa và dung lượng bộ nhớ. – Maddy