zhang_637 发表于 2013-1-29 16:20:00

mysql下海量数据迁移(搬库)

公司数据中心计划将海量数据做一次迁移,同时增加某时间字段(原来是datatime类型,现在增加一个date类型),单表数据量达到6亿多条记录,数据是基于时间(月)做的partition
    由于比较忙,一直没有总结,所以很细节的地方都记不清楚了,此处只是简单总结下当时的情形,备忘
    乱打乱撞
    最初接到任务,没有明确的入手点,直接就是select * from db limit 10000,动态修改翻页数量,通过控制台看耗时情况,慢
SELECT IR_SID,IR_HKEY,IR_GROUPNAME,IR_SITENAME,IR_CHANNEL,IR_MID,IR_URLNAME,IR_STATUS_CONTENT,IR_CREATED_AT,date_format(IR_CREATED_AT,'%Y.%m.%d'),IR_LASTTIME,IR_VIA,IR_THUMBNAIL_PIC,IR_RTTCOUNT,IR_COMMTCOUNT,IR_UID,IR_SCREEN_NAME,IR_RETWEETED_UID,IR_RETWEETED_SCREEN_NAME,IR_RETWEETED_MID,IR_RETWEETED_URL,IR_STATUS_BODYFROM TB_SINA_STATUSWHERE IR_SID>40000 AND IR_SID<50001INTO OUTFILE '/home/mysql/data/data_outfile.txt';LOAD DATA INFILE '/home/mysql/data/data_outfile.txt' INTO TABLE NEW_TB_SINA_STATUS;
    是否可以基于partition读数据呢
    既然数据库是按partition做分区,是否可以按partition读数据呢,如果可以改用怎样的语法读呢?时间上只要按月读数据,mysql会自动的基于partition读,具体可以用命令:explain partition即可看到具有基于哪个partition
    读大数据会十分耗时,对于数据进行到什么状态,我们可能十分想了解,可以用命令:show status查看,我印象中主要是sending data,writting to net之类的。
    innodb引擎的性能较myIsam引擎到底如何?
    导库实验中导出并导入一个月的数据(8G的文本量,2500w条记录),在myisam引擎下需要不到4h(测试环境为pc机),但是在innodb引擎下,却需要32小时,改善索引之类的,也需要28h,性能有8倍之差。
    在网上找到了高人关于innodb与myisam区别,说需要修改innodb_buffer_pool_size、innodb_flush_log_at_trx_commit
可保证没有太大差别,尝试了没有明显改善,在本机倒是可以,为什么呢???这个折腾了我好长时间
    <div class="quote_title">引用
页: [1]
查看完整版本: mysql下海量数据迁移(搬库)