每次运行都需要读取很多数据,请教如何操作比较合适?

2016-06-23 22:06:11 +08:00
 billgreen1
现在在测试一些想法,目前的程序是每次运行的时候,总要读取公司生产环境的数据库中的数据。只是读取使用,没有其他。

如果全部读取,大约 3G 左右 的内存占用,网络速度不是很快。直接用数据接口读取耗时很久。

程序是 python 写的,接受参数是一个 pandas 的 Panel ,程序内部是做了一个循环,一条一条的 feed 过去。

我的基本想法是能不能就直接就存到内存中,反正数据量也不大,这样就省去网络下载的开销。

现在能想到的就是把整个表给下载下来,保存成 csv 文件,然后本地读取。
这样一来,每次调试 /运行的时候, python 读取 G 级别大的 csv 也要耗时一点(不过比从数据库读快多了)。

1.感觉这中解决方法很 dirty ,一点不优美。

2.也有同事会有同样的需求,总不能每台机器上都自备 csv 吧。

希望各位多多指教。
2523 次点击
所在节点    MySQL
7 条回复
3dwelcome
2016-06-24 09:24:29 +08:00
一般都是直接用本地 sqlite 数据库做个缓存。每次调试程序,都从网络下载 3G 数据,太夸张了。
suduo1987
2016-06-24 09:54:46 +08:00
要从优化数据开始啊 3G 数据太多了 什么方法也抗不住啊
domty
2016-06-24 10:54:35 +08:00
缓存数据库啊,小点的本地 sqlite,大点的单独放个服务器装 redis , memcache 。
同时如果远程库是在不断变化的可以考虑做个同步程序。
billgreen1
2016-06-24 11:19:40 +08:00
@domty ,redis 是要放在本机还是另外的服务器?
domty
2016-06-24 13:16:17 +08:00
@billgreen1
随便啊,你要是觉得本机性能允许同时运行程序和 redis 就放本机呗。
jatesun
2016-06-24 14:31:50 +08:00
嗯 redisredis 缓存确实是个好方法。如果主数据库经常变动可以写个小同步程序根据实际情况定时同步
realpg
2016-06-26 02:17:00 +08:00
第一个,把你远程 MYSQL 作为主库,本地这边建立个 MYSQL 作为从库
这样基本就解决网络问题了……

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

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

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

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

© 2021 V2EX