我把每日股票成交明细的 csv 文件,导入到 mysql 里,结果数据库占硬盘过大怎么处理..

2020-07-11 11:16:46 +08:00
 blueaurora

我从淘宝上买了每天的股票成交明细文件, 每支股票一天的成交明细就是一个 csv,一天就是 3800 多个 csv (沪深股票总数。 打成 7z 压缩包,就是 400M 左右。一个月 30 天的话,也就是 12G 左右。 我觉得 csv 麻烦,就想把这些数据写到 mysql 里

我用 python 的 sqlalchemy 从 csv 里 先读出 DataFrame,再把成交股数改为成交手数,再 dataFrame.toSql 写到 mysql 里。 但没想到 mysql 里一天的数据,也就是对应压缩包 400M 的数据,竟然占了 27G.. 我看一个 csv 的内容,到 mysql 里是 10M 左右..我也不知道还有什么乱七八糟的,怎么这么大

我这个 csv 的行首, 就是下边这些了,一般股票,也就是一个 csv 也就 3 万列: TranID Time Price Volume SaleOrderVolume BuyOrderVolume Type SaleOrderID SaleOrderPrice BuyOrderID BuyOrderPrice

我从 sqlalchemy 打印出来的 sql 语句看 TranID 、SaleOrderID 、BuyOrderID ,都是 BigInteger

而 SaleOrderVolume BuyOrderVolume Price SaleOrderPrice BuyOrderPrice 因为有小数,从 sqlalchemy 打印出来的 sql 语句看 都是 Float(53),应该转成 double 了

我觉得这个类型不是影响数据库占硬盘大小的关键问题吧? 我是个 mysql 新手, 想问问这事怎么优化, 我希望的是同样数据量 mysql 占硬盘比 csv 还小,哪知道大了这么多倍

5898 次点击
所在节点    MySQL
38 条回复
Jackeriss
2020-07-11 14:35:51 +08:00
看下你字段类型和索引设置
silentsee
2020-07-11 14:38:35 +08:00
分析场景,直接上 clickhouse
felixcode
2020-07-11 14:47:17 +08:00
@blueaurora
要跟文本相差不大的话,那应该就差不多,mysql 不大清楚,pg 应该有数据压缩的功能或模块,我刚简单搜一下 postgresql data compression,还是能找出不少来的。
hbolive
2020-07-11 17:48:11 +08:00
mysql 比 csv 小不太可能,但是你这也差太多了,看是不是字段不合理。。
boyhailong
2020-07-11 18:47:32 +08:00
压缩
QGabriel
2020-07-11 20:03:03 +08:00
能问问多钱买的吗?
chenxytw
2020-07-11 21:03:55 +08:00
OLAP 场景,选一些列式存储吧....做这些的公司就没见过用 Mysql 的.....
blueaurora
2020-07-11 21:41:42 +08:00
@QGabriel 看 7 楼
blueaurora
2020-07-11 21:43:00 +08:00
谢谢大伙,看来确实白,这场景应该不太适合用 mysql 。 我先改字段+toku 试一下
Jafee
2020-07-11 21:53:39 +08:00
@blueaurora #7 密码换过了? 好像不对了。
bnm965321
2020-07-11 22:09:09 +08:00
这个是数据仓库的应用场景,可以看看 AWS 的 RedShift 。
kelvin_fly
2020-07-12 10:25:01 +08:00
这些数据应该也可以实时抓取。我本来也想程序做一下,后来感觉不如肉眼和手动操作好~
blueaurora
2020-07-12 12:37:16 +08:00
@kelvin_fly 这个数据是分笔真实成交,不是 3 秒或 1 秒的成交快照,实时抓取不到的, 这也不是实时数据,当天下午 4 点左右出来的
fiht
2020-07-12 21:38:19 +08:00
可以考虑用一下 clickhouse,自带压缩,兼容 SQL 语法,非常方便
blueaurora
2020-07-13 09:38:21 +08:00
@Jafee 目前还没有换啊..注意我给的是字母的十进制 ascii 码
Jafee
2020-07-13 09:56:05 +08:00
@blueaurora 奇怪,当时怎么输入都不对,后来就可以了。谢谢!
rnicrosoft
2020-07-14 11:21:44 +08:00
@blueaurora 分享被取消了
594duck
2020-08-06 06:16:26 +08:00
@blueaurora 不要多想了,MYSQL 就是这么大,你裸文本不需要索引没有字段固定大小,但是你的 MYSQL 都有。我的建议是直接考虑买台二手 DELL R730 。 至强少核 高主频,128G 内存,1SSD,4 块 4T 7200 转 组 RAID10 。 @realpg 说手上有大量二手服务器,建议你问他买一台。 他的贴子在这里 https://www.v2ex.com/t/692634#reply91 。关于服务器,我的经验是大于 3 年的,故障率就非常高了。你找他买的时候记得和他签好保修。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/689122

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX