mysql - 我可以在一个表列中存储大量数据(<=4GB)。但这是个好主意吗?

标签 mysql database-optimization

长话短说,我正在开发的应用程序的一部分需要在数据库中存储大量数据,以便应用程序的另一部分稍后获取。通常情况下,该行数小于 2000 行,但有时可能会超过 300,000 行。数据需要暂时保存,之后可以删除。

我一直在思考各种想法,今天想到了一件事。 LONGTEXT 数据类型最多可以存储 2^32 字节,相当于 4 GB。现在,要在一个表行中塞入很多东西。请注意,数据最多可能不会超过 60-80 MB。但我的问题是,实际这样做是个好主意吗?

我目前正在使用的两个解决方案是这样的:

  • 将所有数据作为单独的行插入到“临时”表中,该表将在完成后被截断。
  • 将所有数据作为序列化字符串插入到行中的 LONGTEXT 列中,完成后将删除该列。

纯粹从性能角度来看,将数据存储为可能超过 300,000 个单独的行,还是存储为 60 MB 的 LONGTEXT 条目会更好吗?

如果是一次清洗,我可能会使用LONGTEXT选项,因为它将使应用程序中获取数据的部分更容易编写。它还可以与另一部分更好地结合,从而提高应用程序的整体性能。

如果对此有任何想法,我将不胜感激。

最佳答案

将所有数据序列化为LONGTEXT...亵渎!! :)

说真的,我突然想到,如果你这样做,你将别无选择,只能将其全部提取为一个巨大的部分。另一方面,如果将其分散到单独的行中,则可以让前端以较小的批处理获取它。

至少给自己这个选择似乎是明智之举。 (请记住,低估一次数据的 future 大小要求可能是一个 fatal error !)

如果您正确设计表格,我非常怀疑分布在 300.000 行上的 60MiB 数据是否会比获取 60MiB 文本并在前端解析它的效率低。

最终的问题是:你认为你的前端解析文本的效率比 MySQL 获取文本的效率高吗?

关于mysql - 我可以在一个表列中存储大量数据(<=4GB)。但这是个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2091541/

相关文章:

mysql - 删除除一个优化查询之外的所有重复项

python - django migration 创建只有一个字段的表

sql-server - SQL Server 执行时间代表什么?

postgresql - 有什么方法可以列出与现有 postgres 模式中的表相关的所有 View

mysql - stackoverflow如何获取用户事件(如投票)的数据库计数?

mysql - Mysql表大小优化

mysql - 使用 UNIX_TIMESTAMP 的查询中出现奇怪的差异

php - MySQL调用数据库次数少

php - 在数组中使用 TwitterOAuth

MySQL 对 Where 子句中函数查询的优化