mysql空间数据mysql空间数据类型

2024-09-04 20:10:58 浏览

谢谢邀请,理论上mysql对数据库本身的容量不会做容量方面的限制。具体这个要看你的数据库用什么存储引擎了,这里以常见的MyISAM,Innodb为例。MyISAM不对它的数据文件的大小做任何限制,文件的大小取决于操作系统对每个文件系统单个文件大小的限制。

空间数据空间数据类型

innodb就不同了,MySQL对每个表空间的大小限制是64T。每个表空间可以有一个或者多个文件,单个文件的大小同样取决于操作系统,但总体同一表空间中所有文件的总和不能超过64T。

Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是Oracle就只有一个大数据库。

在mysql数据库中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。

当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。

SQL Server对每个表中行的数量没有直接限制,但它受数据库存储空间的限制。每个数据库的最大空间1048516TB,所以一个表可用的最大空间为1048516TB减去数据库类系统表和其它数据库对象所占用的空间。

Innodb数据库对于已经删除的数据只是标记为删除,并不真正释放所占用的磁盘空间,这就导致InnoDB数据库文件不断增长。

如果在创建数据库的时候设置innodb_file_per_table=1,这样InnoDB会对每个表创建一个数据文件,然后只需要运行OPTIMIZE TABLE 命令就可以释放所有已经删除的磁盘空间。

运行OPTIMIZE TABLE 表名后,虽然最后会报Table does not support optimize, doing recreate + analyze instead,但其实已经成功了:)-------------------------------------------------------------如果没有设置这个参数,又想释放空间,彻底释放这些已经删除的数据,需要把数据库导出,删除InnoDB数据库文件,然后再倒入。下面是基本的步骤:

1 使用mysqldump命令将InnoDB数据库导出2 停止MySQL3 删除所有InnoDB数据库文件和日志4 启动MySQL并自动重建InnoDB数据库文件和日志文件5 导入前面备份的数据库文件# 备份数据库:mysqldump -uroot -proot --quick --force --all-databases > mysqldump.sql# 停止数据库service mysqld stop# 删除这些大文件rm /usr/local/mysql/var/ibdata1rm /usr/local/mysql/var/ib_logfile*# 手动删除除Mysql之外所有数据库文件夹,然后启动数据库service mysqld start# 还原数据mysql -uroot -proot < mysqldump.sql

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。