您的位置  > 互联网

大佬教程:MysqL必读MysqL下海量数据的迁移步骤分享

《MysqL必读:MysqL下海量数据迁移分享步骤》要点:

本文介绍了MysqL的必读,并分享了MysqL下迁移海量数据的步骤。 我希望它对你有用。 如果您有任何疑问,可以联系我们。

@@mysqL 必读 公司数据中心计划迁移海量数据,新增时间字段(原来是类型,现在是日期类型)。 单表数据量达到6亿条以上。 数据是基于时间(月)的,当时很忙,我还没有总结,所以我记不清所有细节了。 这里只是简单总结一下当时的情况,并做个备忘录。

@@mysqL 必须随机读取

@@mysqL必读 当我第一次接到任务时,没有明确的起点。 只不过是* from db limit 10000,动态修改翻页数,通过控制台查看耗时。 速度很慢。

代码如下所示:

,,,,,,,,,(,'%Y.%m.%d'),,,,,,,,,姓名,,, 来自 >40000 且

@@mysqL 所需的读取可以基于读取数据吗?

@@mysqL必须读取 既然数据库是分区的,那么我们可以按分区读取数据吗? 如果是这样,可以使用什么语法来读取它? 只要按月读取数据,MysqL就会根据它自动读取。 具体可以使用命令: 即可以看到有一个

读取大数据会非常耗时。 我们可能很想知道数据处于什么状态,我们可以使用命令:show来查看。 在我的印象中主要是数据、到网之类的。

发动机性能与发动机相比如何?

数据库导入实验中,一个月的数据(8G文本量,2500万条记录)在引擎下(测试环境是PC)导出导入用时不到4小时,但在引擎下需要32小时以提高指标。 类似的,也需要28h,性能差8倍。

@@mysqL必看 我在网上找到了一位专家关于ize和ize的区别,说需要修改。

@@mysqL 一定要读一下,确保没有太大区别。 尝试后并没有明显的改善。 在这台机器上是没问题的。 为什么??? 我已经为此苦苦挣扎了很长时间。

@@mysqL 必读 你担心速度慢1000倍吗? 看来你可能忘记修改这个参数了。 默认值为 1,这意味着提交的每个更新事务(或事务外的每个语句)都将刷新到磁盘,这是相当资源密集型的,尤其是在没有电池支持的缓存的情况下。 许多应用程序,特别是那些从磁盘上转换的应用程序,但仅刷新到操作系统缓存。 日志仍然会每秒刷新到磁盘,因此每秒1-2次更新的消耗通常不会丢失。 如果设置为0,会快很多,但是也比较不安全——当MysqL服务器崩溃时,一些事务会丢失。 将其设置为2只会丢失刷新到操作系统缓存的部分事务。

@@mysqL必须阅读

@@mysqL 在默认大小设置下必须以蜗牛般的速度读取。 由于数据和索引都被缓存,所以不需要给操作系统留下太多的内存,所以如果你只需要使用它,你可以将其设置为可用内存的70-80%。

@@mysqL必看 最后经过千辛万苦,跋山涉水,我找到了另外两个参数。

@@mysqL必读

@@mysqL 所需的读取在高写入负载下非常重要,尤其是大数据集。 值越大,性能越高,但请注意恢复时间可能会增加。 我经常将其设置为 64-512MB,具体取决于服务器大小。

@@mysqL必须阅读

默认设置在中等强度写入负载和短事务下提供可接受的服务器性能。 如果存在更新操作高峰或负载较重,则应考虑增加其值。 如果它的值设置得太高,可能会浪费内存——每秒都会刷新一次,所以不需要设置超过1秒所需的内存空间。 通常8-16MB就足够了。 系统越小,其价值就越小。

@@mysqL必读

终于搞定了,性能和导入的数据基本一致。 读取2500条数据大约需要3.5h,单个数据库读取数据需要2h。 这只是一个指示值,仅供参考(在PC上测试)。 在官方服务上的测试结果更加出色。 明显的

@@mysqL必读性能调优语句参考

代码如下所示:

设置= 1;

显示\G

显示 cpu,BLOCK IO io FOR 查询 1;

展示

展示

@@mysqL 必读 并行读取会更快吗?

@@mysqL必读 如果基于导入的数据,设定的目标还是达不到,最后我写了shell脚本,基于导入的数据多进程并行,即启动多个MysqL -uroot -p db < .sql, MysqL -uroot -p db < .sql,每个sql下按日进行读写(事件环境下按月进行)

代码如下所示:

,

INTO '/home/MysqL/data//.txt'

BY ',' BY '"' BY '\\'

行按 '\n'