2010-07-07 26 views
9

Có lệnh nào để kiểm tra xem còn bao nhiêu phòng MySql không?Kiểm tra MySql Space

+1

df -h? (padding đi đây) – shylent

+0

Tôi nghĩ rằng bạn sẽ có may mắn hơn với điều này trên ServerFault – Greg

+0

Cảm ơn tất cả mọi người cho câu trả lời Tôi không biết nếu mysql có thể giới hạn số lượng dữ liệu nó có thể lưu trữ. Nếu tôi giữ một mắt trên không gian đĩa của máy chủ, tôi sẽ có thể có một loại ý tưởng về số lượng còn lại cho cơ sở dữ liệu. – MrB

Trả lời

5

Thông thường, MySQL không giới hạn không gian có thể sử dụng. Bạn có thể sử dụng tất cả không gian đĩa cứng của bạn (s) chứa.

Tuy nhiên, có một vài ngoại lệ đối với các bảng thực sự lớn. Ví dụ như MyISAM Storage Engine, có Max_Data_Length xác định lượng dữ liệu mà một bảng có thể xử lý (tùy thuộc vào số byte được sử dụng cho con trỏ) ... nhưng theo mặc định 4Gb trên mỗi bảng không có vấn đề gì, và từ MySQL 5 một bảng có thể lưu trữ 256TB.

0

Khó hiểu, Điều đó tùy thuộc vào không gian đĩa cứng của bạn.

Nếu bạn có chỗ trống trong Ổ cứng nơi bạn đã cài đặt máy chủ mysql, Bạn có thể lưu trữ bản ghi triệu ++.

+0

Bạn có bất kỳ ý tưởng làm thế nào để tìm ra bao nhiêu không gian còn lại trên đĩa hoàn toàn thông qua truy vấn SQL? –

+0

không chắc chắn nếu nó có thể – Paladin

1

MySQL sử dụng dung lượng đĩa của bạn, vì vậy khi đĩa của bạn đang có chỗ còn lại thì MySQL cũng nên có chỗ.

Trong MySQL, sử dụng lệnh SHOW TABLE STATUS và xem cột Data_length cho mỗi bảng, theo byte.

Xem thêm:

  1. How to monitor MySQL space?
  2. How can you determine how much disk space a particular MySQL table is taking up?
  3. Mysql table size on the HDD
  4. How do I check how much disk space my database is using?
+0

Tôi muốn biết có bao nhiêu không gian còn lại trên ổ đĩa cứng. Tôi muốn nói với một người dùng đang chạy một chương trình để suy nghĩ hai lần trước khi chạy một tiện ích có hiệu quả sẽ tăng gấp bốn lần kích thước của cơ sở dữ liệu của họ. Chương trình không có trên máy chủ cơ sở dữ liệu nhưng được kết nối qua ODBC. Tôi có thể làm điều này (nhiều hơn hoặc ít hơn) trong Microsoft SQL bằng cách sử dụng XP_FIXEDDRIVES, nhưng tôi cần phải hỗ trợ MSSQL và MYSQL vì vậy tôi đang tìm kiếm một thói quen so sánh. –

7

@PeterTurner Tôi có một bài trước đó từ ngày 29 tháng mười năm 2010 vào bao nhiêu không gian được sử dụng bởi MySQL

How to monitor MySQL space?

Tuy nhiên, tôi biết đây không phải là những gì bạn đang tìm kiếm. Bạn không muốn sử dụng bao nhiêu ổ đĩa MySQL. Câu hỏi của bạn chỉ đơn giản là bao nhiêu không gian còn lại, nơi mysql được viết. Đó không phải là một hoạt động MySQL. Tuy nhiên, bạn có thể tận dụng lợi thế của MySQL để nhanh chóng trả lời câu hỏi của bạn kết hợp với hệ điều hành cục bộ. Cùng với những gì? Lệnh df

các df hiển thị sáu cột

[[email protected]******** ~]# df -h | head -1 
Filesystem   Size Used Avail Use% Mounted on 

Đó phá vỡ xuống

  • Filesystem
  • Kích
  • Dùng
  • Avail
  • Sử dụng%
  • đặt trên

Bạn cần phải nhận được cột 4, Avail. Có một vấn đề với ý tưởng này: Nếu tên hệ thống tập tin quá dài, thì di chuyển cột 2-6 đến dòng tiếp theo.Dưới đây là ví dụ:

[[email protected]******** ~]# df 
Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/mapper/vg1-root 122236876 9196208 106731192 8%/
/dev/mapper/vg2-data01 
        1726991928 810877540 828388308 50% /data 
/dev/sdc1   3844656172 559221048 3090137848 16% /backup 
/dev/sda1    101086  17569  78298 19% /boot 
tmpfs     98976204   0 98976204 0% /dev/shm 
none     16777216  58576 16718640 1% /var/tmpfs 
[[email protected]******** ~]# df -h /var/lib/mysql 
Filesystem   Size Used Avail Use% Mounted on 
/dev/mapper/vg2-data01 
         1.7T 774G 791G 50% /data 

Lưu ý rằng tên hệ thống tệp của thư mục dữ liệu di chuyển cột 2-6 sang dòng kế tiếp.

Do đó, chỉ cần đếm số lượng màn hình df. Nếu có hai dòng, hãy lấy mã số # 4. Nếu có ba dòng, hãy lấy mã số 3. Đây là kịch bản shell mà sẽ vang không gian có sẵn, nơi datadir mysql được gắn:

MYSQL_USER=root 
MYSQL_PASS=rootpassword 
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}" 
SQLSTMT="SHOW VARIABLES LIKE 'datadir'" 
DATADIR=`mysql ${MYSQL_CONN} -ANe"${SQLSTMT}" | awk '{print $2}'` 
df -B 1 ${DATADIR} > /tmp/dfmysql.txt 
LC=`wc -l < /tmp/dfmysql.txt` 
if [ ${LC} -eq 2 ] ; then SPC=`tail -1 /tmp/dfmysql.txt | awk '{print $4}'` ; fi 
if [ ${LC} -eq 3 ] ; then SPC=`tail -1 /tmp/dfmysql.txt | awk '{print $3}'` ; fi 
echo ${SPC} 

Chú ý dòng có

df -B 1 ${DATADIR} > /tmp/dfmysql.txt 

này sẽ cung cấp cho các báo cáo df theo byte. Bạn có thể thay đổi nó:

  • df cho sản lượng trong KB
  • df -B 1K cho sản lượng trong KB
  • df -B 1M cho sản lượng trong MB

Sự tương tác mysql chỉ được lấy từ datadir mysql.

Hãy thử!

Các vấn đề liên quan