gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 11:09:42 25 4
gpt4 key购买 nike

我在 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 |
+---------------+------------------+------+-----+---------+----------------+

最佳答案

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

如果您想要非常紧凑的表格,您可能需要尝试使用 ARCHIVE engine类型。它具有仅附加表,但它们经过压缩,可以保存大量数据,而无需修剪或修剪。缺点是它们的索引不太好,但这对您来说似乎不是问题。

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

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

关于mysql - 优化非常大的表的存储大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40815352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com