是否有命令检查MySql剩余多少空间?
答案 0 :(得分:8)
@PeterTurner我在2010年10月29日发表了一篇关于MySQL使用了多少空间的帖子
然而,我知道这不是你想要的。您不希望MySQL使用多少磁盘空间。你的问题只是mysql写的空间有多少。这不是MySQL操作。不过,您可以利用MySQL快速回答本地操作系统的问题。结合什么?命令df
df
显示六列
[root@******** ~]# df -h | head -1
Filesystem Size Used Avail Use% Mounted on
分解为
您需要获得第4列Avail
。这个想法存在一个问题:如果文件系统名称太长,则将列2-6移动到下一行。这是一个例子:
[root@******** ~]# 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
[root@i******** ~]# df -h /var/lib/mysql
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg2-data01
1.7T 774G 791G 50% /data
请注意,数据文件夹的文件系统名称会将第2-6列移到下一行。
因此,只需显示df
显示的行数。如果有两行,则获取令牌#4。如果有三行,则获取令牌#3。这是shell脚本,它将回显安装mysql的datadir的可用空间:
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}
注意
的行df -B 1 ${DATADIR} > /tmp/dfmysql.txt
这将以字节为单位提供df
报告。你可以改变它:
df
以KB格式提供输出df -B 1K
以KB格式提供输出df -B 1M
以MB为单位提供输出唯一的mysql交互是从mysql中检索datadir
。
试一试!!!
答案 1 :(得分:6)
通常, MySQL不限制它可以使用的空间。您可以使用您的硬盘包含的所有空间。
但是,对于非常大的表格,有一些例外。例如MyISAM存储引擎,有一个Max_Data_Length,它决定一个表可以处理多少数据(取决于用于指针的字节数)......但默认情况下,每个表4Gb没有问题,而且从MySQL 5开始,一个表可以存储256TB。
答案 2 :(得分:1)
MySQL使用你的磁盘空间,所以当你的磁盘剩下空间时,MySQL也应该有空间。
在MySQL中,使用SHOW TABLE STATUS
命令,查看每个表的Data_length列,以字节为单位。
另见:
答案 3 :(得分:0)
令人困惑,这取决于您的硬盘空间。
如果您在安装了mysql服务器的硬盘中有空间,则可以存储数百万条++记录。