优化非常大的表的存储大小

时间:2016-11-26 05:42:46

标签: mysql

我在MyISAM存储引擎上的MySQL中有以下架构的大量行(数十亿)。有关如何更有效地存储(存储方式)的任何建议吗?

mysql> describe options;
+---------------+------------------+------+-----+---------+----------------+
| Field         | Type             | Null | Key | Default | Extra          |
+---------------+------------------+------+-----+---------+----------------+
| stockid       | int(10) unsigned | NO   | MUL | NULL    |                |
| strike        | float            | NO   |     | NULL    |                |
| symbol        | varchar(63)      | NO   |     | NULL    |                |
| last          | float            | NO   |     | NULL    |                |
| chg           | float            | NO   |     | NULL    |                |
| bid           | float            | NO   |     | NULL    |                |
| ask           | float            | NO   |     | NULL    |                |
| expirydate    | varchar(63)      | YES  |     | NULL    |                |
| ticker        | varchar(63)      | YES  |     | NULL    |                |
| expiry        | datetime         | YES  |     | NULL    |                |
| type          | varchar(63)      | YES  |     | NULL    |                |
| datecaptured  | datetime         | YES  |     | NULL    |                |
| volume        | bigint(20)       | YES  |     | NULL    |                |
| openint       | bigint(20)       | YES  |     | NULL    |                |
| lastclosedate | date             | YES  |     | NULL    |                |
| row_id        | int(11)          | NO   | PRI | NULL    | auto_increment |
+---------------+------------------+------+-----+---------+----------------+

1 个答案:

答案 0 :(得分:1)

这里最明显的问题是将日期存储为字符串,使用的空间比必要的多,并且使索引不切实际。您还需要检查为什么第一列设置为不规则INT(10) UNSIGNED类型而不是默认INT(11)

如果您想要非常紧凑的表格,可能需要尝试使用ARCHIVE engine类型。它只有附加表,但它们是压缩的,可以容纳大量数据而无需修剪或修剪。缺点是他们没有索引,但这对你来说似乎不是一个问题。

注意:MyISAM是一个非常古老而脆弱的存储引擎,所以如果你可以从它迁移到InnoDB,你会更好。由于MyISAM没有日志,因此无法轻松地从服务器崩溃中恢复,并且很容易被损坏而无法修复。 InnoDB能够从大多数情况下恢复,在不能的情况下,您仍然可以只读取它并在其他地方使用数据。

如果SHOW TABLE STATUS没有表明存储问题,请不要担心。硬盘驱动器很便宜,甚至是SSD品种。