@PeterTurner我在2010年10月29日发表了一篇关于MySQL使用了多少空间的文章
但是,我知道这不是你想要的.您不希望MySQL使用多少磁盘空间.你的问题只是mysql写的空间有多少.这不是MySQL操作.不过,您可以利用MySQL快速回答本地操作系统的问题.结合什么?命令df
该df显示六列
[root@******** ~]# df -h | head -1
Filesystem Size Used Avail Use% Mounted on
Run Code Online (Sandbox Code Playgroud)
那打破了
你需要得到第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
Run Code Online (Sandbox Code Playgroud)
请注意,数据文件夹的文件系统名称将列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}
Run Code Online (Sandbox Code Playgroud)
注意有的行
df -B 1 ${DATADIR} > /tmp/dfmysql.txt
Run Code Online (Sandbox Code Playgroud)
这将以df字节为单位给出报告.你可以改变它:
df 以KB为单位给出输出df -B 1K 以KB为单位给出输出df -B 1M 以MB为单位给出输出唯一的mysql交互是datadir从mysql中检索.
试试看 !!!
通常,MySQL不限制它可以使用的空间.您可以使用硬盘包含的所有空间.
但是,对于非常大的表格,有一些例外.例如MyISAM存储引擎,有一个Max_Data_Length,它决定一个表可以处理多少数据(取决于用于指针的字节数)......但默认情况下,每个表4Gb没有问题,而且从MySQL 5开始,一个表可以存储256TB.
MySQL 使用您的磁盘空间,因此当您的磁盘有剩余空间时,MySQL 也应该有空间。
在 MySQL 中,使用该SHOW TABLE STATUS命令,查看每个表的 Data_length 列,以字节为单位。
也可以看看 :
| 归档时间: |
|
| 查看次数: |
28978 次 |
| 最近记录: |