【问题标题】:MYSQL large data table setupMYSQL大数据表设置
【发布时间】:2013-08-13 02:32:57
【问题描述】:

我有一个如下所示的表格:

    CREATE TABLE IF NOT EXISTS `levels` (
  `id` int(6) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `creator` varchar(25) NOT NULL,
  `levelcode` longtext NOT NULL,
  `description` mediumtext NOT NULL,
  `date` date NOT NULL,
  `views` int(6) NOT NULL,
  `favCount` int(6) NOT NULL,
  `total_votes` int(11) NOT NULL,
  `total_value` int(11) NOT NULL,
  `rating` float(4,2) NOT NULL,
  `spamCount` int(3) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

基本上,我创建了一个游戏,人们可以在其中提交自己的关卡。我目前正在争论的是是否将 levelcode 列移动到它自己的表中,甚至是它自己的文本文件中的每个级别。 Levelcode 可以变得相当大(500,000+ 个字符)

有什么建议吗?

【问题讨论】:

  • “500,000+”只有 500KB。这可能不会伤害你的数据库......如果你足够聪明以避免不必要的SELECT *......
  • 我对我的选择语句非常小心,不过感谢您的提示。更新:刚刚进行了数据库扫描。最大级别为 4,766,887 个字符

标签: mysql large-data


【解决方案1】:

您可以在您的情况下使用 LongText,因为 Longtext 的限制是

LONGBLOB, LONGTEXT       L + 4 bytes, where L < 2^32   (4 Gigabytes)

看看这个link

【讨论】:

  • 好吧,所以如果它在自己的表中就不会提高性能? -- 我只是仔细检查了...最大级别是 4,766,887 个字符。
【解决方案2】:

长文本应该适合你。从这里的文档:

http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html

LONGTEXT [CHARACTER SET charset_name] [COLLATE collation_name]

A TEXT column with a maximum length of 4,294,967,295 or 4GB (232 – 1) characters.
The effective maximum length is less if the value contains multi-byte characters.
The effective maximum length of LONGTEXT columns also depends on the configured
maximum packet size in the client/server protocol and available memory. Each
LONGTEXT value is stored using a 4-byte length prefix that indicates the number
of bytes in the value.

编辑:我相信提到的数据包大小是 MySQL 数据包大小,默认为 16MB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多