› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
billgreen1
V2EX  ›  MySQL

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

  •  
  •   billgreen1 · Jun 23, 2016 · 3357 views
    This topic created in 3751 days ago, the information mentioned may be changed or developed.
    现在在测试一些想法,目前的程序是每次运行的时候,总要读取公司生产环境的数据库中的数据。只是读取使用,没有其他。

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

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

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

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

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

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

    希望各位多多指教。
    7 replies  •  2016-06-26 02:17:00 +08:00
    3dwelcome
        1
    3dwelcome  
       Jun 24, 2016
    一般都是直接用本地 sqlite 数据库做个缓存。每次调试程序,都从网络下载 3G 数据,太夸张了。
    suduo1987
        2
    suduo1987  
       Jun 24, 2016
    要从优化数据开始啊 3G 数据太多了 什么方法也抗不住啊
    domty
        3
    domty  
       Jun 24, 2016
    缓存数据库啊,小点的本地 sqlite,大点的单独放个服务器装 redis , memcache 。
    同时如果远程库是在不断变化的可以考虑做个同步程序。
    billgreen1
        4
    billgreen1  
    OP
       Jun 24, 2016
    @domty ,redis 是要放在本机还是另外的服务器?
    domty
        5
    domty  
       Jun 24, 2016
    @billgreen1
    随便啊,你要是觉得本机性能允许同时运行程序和 redis 就放本机呗。
    jatesun
        6
    jatesun  
       Jun 24, 2016 via iPhone
    嗯 redisredis 缓存确实是个好方法。如果主数据库经常变动可以写个小同步程序根据实际情况定时同步
    realpg
        7
    realpg  
       Jun 26, 2016
    第一个,把你远程 MYSQL 作为主库,本地这边建立个 MYSQL 作为从库
    这样基本就解决网络问题了……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2576 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:25 · PVG 22:25 · LAX 07:25 · JFK 10:25
    ♥ Do have faith in what you're doing.