与SQL Server相比,为什么这个表占用MySQL的10倍磁盘空间?

时间:2016-07-18 04:01:45

标签: mysql sql sql-server database

我注意到,与SQL Server相比,MySQL的磁盘空间要多10倍。我通过在每个数据库中创建包含100列和1000行的表来找到它:

  • MySQL有一个类型VarChar(MAX)
  • 的100个可空列
  • SQL Server 1有100个类型为INT
  • 的可空列
  • 每个都有一个类型为create table data1( id MEDIUMINT NOT NULL AUTO_INCREMENT, column1 text null, column2 text null, column3 text null, -- ... column99 text null, column100 text null, PRIMARY KEY (id))
  • 的主键

然后我在两个数据库的所有列中插入了带有GUIDS的1000行。以下是我得到的结果:

  • MySQL:499 MB
  • SQL Server:41MB

为什么这两个数据库之间有这么不同?即使我在新的空数据库上进行此测试,我也会看到相同的结果。

这是我使用的MySQL表定义:

create table data1(id int IDENTITY(1,1) PRIMARY KEY, 
    column1 varchar(max) null, 
    column2 varchar(max) null, 
    column3 varchar(max) null, 
    -- ...
    column99 varchar(max) null, 
    column100 varchar(max) null)

这是SQL Server的一个:

.deploy('my_app', 'some_branch_on_github)

1 个答案:

答案 0 :(得分:2)

在SQL Server中,将数据存储在固定宽度字段中占用的空间量与任何其他值(即see here)的宽度相同。

因此,您的SQL Server表有100,000个值,您插入的值存储为最大宽度TEXT

在MySQL中,您使用的是可变大小的TEXT字段。我相信数据甚至不需要存储在实际的表中。 {{1}}的存储开销似乎没有占用太多空间。这似乎比SQL Server的开销要小得多,这解释了你的观察结果。