MySQL下共享海量数据迁移步骤
陷入困境
起初,接收任务时没有明确的起始点。它是直接从DB限制10000中直接选择的,动态地改变页面的数量,通过控制台非常耗时而且速度慢。
复制代码代码如下所示:
选择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,''%1 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_body从tb_sina_status哪里ir_sid > 40000和ir_sid < 50001到outfile ' /家/ MySQL /数据/ data_outfile .txtLOAD DATA INFILE ' / / /家MySQL数据/ data_outfile .txt;为表new_tb_sina_status;
你能阅读基于分区的数据吗
由于数据库是按分区划分的,您是否可以按照分区读取数据,如果可以用什么语法读取它只要我们每月读取数据,MySQL就自动在分区上读取数据。我们可以看到哪个分区是基于命令:解释分区。
阅读大数据将是非常耗时的。对于什么状态的数据,我们可能非常想知道。您可以使用命令:显示状态来查看它。我认为主要是发送数据,写信给网络等等。
在InnoDB引擎的性能比MyISAM引擎是什么
在实验数据的基础上的出口和进口一个月(文字、金额8g 2500w记录),在小于4h的MyISAM引擎(PC测试环境),但在InnoDB引擎,它需要32个小时,提高指标等,也需要28h,性能的区别8倍。
在互联网上,一个高的人一直对InnoDB和MyISAM之间的差异发现,说innodb_buffer_pool_size和innodb_flush_log_at_trx_commit需要修改
可以保证没有太大的差别,试试没有明显的改进,在这台机器就可以了,为什么我花了很长时间。
innodb_flush_log_at_trx_commit
比MyISAM和大头慢是InnoDB的1000倍你似乎忘了修改这个参数的默认值是1,这意味着每一个更新事务(或每一次交易表外刷新到磁盘上,)这是相当耗费资源的,特别是当没有电池备份缓存。许多应用程序,尤其是那些由MyISAM,确定其价值2,就是他们没有刷新日志到磁盘,但刷新到操作系统的缓存,日志仍然会刷新每秒磁盘,所以它通常不会失去每秒1-2更新消费。如果你将它设置为0,它的速度更快,但这是相对不安全的几笔交易都将丢失当MySQL服务器崩溃。设置为2,将失去的那部分e被刷新到操作系统缓存的事务。
innodb_buffer_pool_size
InnoDB是默认设置下的innodb_buffer_pool_size蜗牛。因为InnoDB的缓存数据和索引,它不需要留太多的内存用于操作系统,所以如果你只需要设置,你可以设置它的70-80%的可用内存。
最后,在陆地和水上旅行的艰辛发现了另外两个参数。
innodb_log_file_size
这是写一个高负荷的重要,尤其是一个大的数据集。价值越高,更高的性能,但它注意到复苏的时间可能会增加重要。我经常把它64-512mb,不同服务器的大小。
innodb_log_buffer_size
默认设置是在中等强度负荷的情况下写短的交易。如果更新操作或负载峰值较大,则应考虑增加它的价值。如果它的值设置太高了,可能会浪费内存将被刷新一次,因此有不需要超过一秒设置内存空间。通常8-16mb是不够的。系统更小,更小的它的价值。
最后,MyISAM和InnoDB的指导数据的性能基本上是相同的。2500的数据需要3.5h,和单库读取数据需要2h。这只是一个示意值仅供参考。(PC的测试),官方服务的测试结果更明显。
性能调优语句引用
复制代码代码如下所示:
设置剖析= 1;
显示配置文件
显示配置文件CPU,用于查询1的块IO;
显示状态
显示列表
解释
平行阅读速度快吗
如果基于数据分区,仍不能达到目标,我终于被壳的速度写的,基于数据的多进程并行分区,即MySQL中P DB推出exp201201.sql MySQL中,P < exp201202.sql分贝,每个SQL根据阅读与写作的天(事件环境是一个月的分区)
复制代码代码如下所示:
选择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,''%1 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_body
为导出的文件 / / /家MySQL数据 / / 111101 sinawb20120724 .txt
字段被','可选地包含' ' '转义'
以结尾的行'
从tb_sina_status
在ir_created_at > = '2011-11-01 00:00:00'and ir_created_at < '2011-11-01 23:59:59
数据加载的 / / /家MySQL数据 / / 111101 sinawb20120724 .txt
忽略到表` new_tb_sina_status `
utf8字符集
字段被','可选地包含' ' '转义'
以结尾的行'