2012-03-16 36 views
19

Tôi không hoàn toàn chắc chắn những gì information_schema.TABLES.DATA_FREE có nghĩa là trong MySQL.Thông tin_schema.TABLES.DATA_FREE có nghĩa là gì trong MySQL?

Ai đó có thể giúp tôi hiểu không?

Cảm ơn bạn.

+1

Đối với một bảng InnoDB, nó cho thấy số lượng các byte trong không gian đó không được hiện đang được sử dụng trong bảng –

+0

Got nó. Cảm ơn. – bananaaus

Trả lời

5

Theo thông tin của MySQL trên MySQL 5.6:

Cột DATA_FREE cho thấy không gian trống trong byte cho các bảng InnoDB

Đối với phiên bản trước đó như 5.5:

Cột DATA_FREE hiển thị không gian trống theo byte cho các bảng InnoDB.

Đối với cụm MySQL, DATA_FREE hiển thị không gian được phân bổ trên đĩa cho, nhưng không được sử dụng bởi, bảng Dữ liệu đĩa hoặc phân đoạn trên đĩa. (Trong bộ nhớ sử dụng tài nguyên dữ liệu được báo cáo của các cột DATA_LENGTH.)

+0

OK. Cảm ơn. – bananaaus

0

Với innodb_file_per_table = OFF tất cả các bảng InnoDB được lưu trữ trong các bảng tương tự. DATA_FREE (số byte được phân bổ nhưng không sử dụng) được báo cáo cho vùng bảng đơn đó.

đọc http://dev.mysql.com/doc/refman/5.0/en/innodb-file-space.html:

"Khi bạn yêu cầu không gian trống có sẵn trong bảng bằng cách phát hành một SHOW TABLE STATUS tuyên bố, InnoDB báo cáo mức độ đó chắc chắn tự do trong không gian bảng InnoDB luôn giữ một số mức độ cho. dọn dẹp và các mục đích nội bộ khác; các khoản đặt trước dành riêng này không được bao gồm trong không gian trống. "

Vì vậy, đối với các bảng InnoDB, không gian trống trong không gian bảng được báo cáo và vì tất cả các bảng của bạn chia sẻ cùng một không gian bảng, cùng một giá trị là kết quả.

+0

Ah ... cảm ơn Naveen. – bananaaus

8

DATA_FREE- Số byte được phân bổ nhưng không sử dụng. Đây là kích thước của các tệp cơ sở dữ liệu so với dữ liệu được lưu trữ trong các tệp cơ sở dữ liệu. PHPMyAdmin hiển thị thông tin này là 'Overhead in tables'.

Tuy nhiên đối với InnoDB điều này là quan trọng- "bảng InnoDB báo cáo không gian trống của vùng bảng mà bảng thuộc về. Đối với một bảng nằm trong vùng bảng dùng chung, đây là không gian trống của không gian bảng được chia sẻ.". Vì vậy, với một thiết lập InnoDB điển hình ('innondb_file_per_table' không được thiết lập), bạn sẽ nhận được không gian trống cho tất cả các bảng chứ không phải cho một bảng duy nhất.

Tham khảo: http://dev.mysql.com/doc/refman/5.5/en/tables-table.htmlhttp://dev.mysql.com/doc/refman/5.5/en/show-table-status.html

+0

OK. Cảm ơn. – bananaaus