首页 > 其他分享 >InnoDB 表的批量数据加载

InnoDB 表的批量数据加载

时间:2023-01-05 14:44:45浏览次数:52  
标签:... FTS 批量 InnoDB 日志 加载 重做

概述

加速innodb表的数据批量加载的方法

解决方案

  • 将数据导入InnoDB时,关闭自动提交模式,因为它会为每次插入执行日志刷新到磁盘。要在导入操作期间禁用自动提交,请用 SET autocommitand COMMIT语句将其括起来:

    SET autocommit=0;
    ... SQL import statements ...
    COMMIT;

     

    mysqldump选项 --opt创建可以快速导入到表中的转储文件 ,即使不使用and 语句 InnoDB 包装它们也是如此 。

  • 如果您UNIQUE对辅助键有限制,您可以通过在导入会话期间暂时关闭唯一性检查来加速表导入:

    SET unique_checks=0;
    ... SQL import statements ...
    SET unique_checks=1;

     

    对于大表,这可以节省大量的磁盘 I/O,因为 InnoDB可以使用它的更改缓冲区来批量写入二级索引记录。确保数据不包含重复键。

  • 如果您FOREIGN KEY的表中有约束,您可以通过在导入会话期间关闭外键检查来加速表导入:

    SET foreign_key_checks=0;
    ... SQL import statements ...
    SET foreign_key_checks=1;

     

    对于大表,这可以节省大量磁盘 I/O。

  • INSERT 如果需要插入多行, 请使用多行语法来减少客户端和服务器之间的通信开销:

    INSERT INTO yourtable VALUES (1,2), (5,5), ...;

     

    此技巧适用于插入任何表,而不仅仅是 InnoDB表。

  • 在对具有自动递增列的表进行批量插入时,设置 innodb_autoinc_lock_mode为 2(交错)而不是 1(连续)。

  • PRIMARY KEY执行批量插入时,按顺序 插入行会更快 。InnoDB表使用 聚集索引,这使得按PRIMARY KEYPRIMARY KEY对于不能完全容纳在缓冲池中的表, 按顺序执行批量插入尤为重要。

  • 为了在将数据加载到 InnoDB FULLTEXT索引时获得最佳性能,请遵循以下步骤:

    1. FTS_DOC_ID在表创建时 定义一个类型为 的列BIGINT UNSIGNED NOT NULL,其唯一索引名为 FTS_DOC_ID_INDEX。例如:

      CREATE TABLE t1 (
      FTS_DOC_ID BIGINT unsigned NOT NULL AUTO_INCREMENT,
      title varchar(255) NOT NULL DEFAULT '',
      text mediumtext NOT NULL,
      PRIMARY KEY (`FTS_DOC_ID`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
      CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID);

       

    2. 将数据加载到表中。

    3. FULLTEXT加载数据后 创建索引。

     
  • 如果将数据加载到ALTER INSTANCE {ENABLE|DISABLE} INNODB REDO_LOG的 MySQL 实例中,请考虑使用语法禁用重做日志记录 。禁用重做日志记录有助于通过避免重做日志写入来加快数据加载。有关详细信息,请参阅 禁用重做日志记录

    警告

    此功能仅用于将数据加载到新的 MySQL 实例中。不要在生产系统上禁用重做日志记录。允许在禁用重做日志记录时关闭并重新启动服务器,但是在禁用重做日志记录时服务器意外停止可能会导致数据丢失和实例损坏。

标签:...,FTS,批量,InnoDB,日志,加载,重做
From: https://www.cnblogs.com/lkj371/p/17027495.html

相关文章

  • unity3d异步加载场景
    ​​unity3d​​​​loading界面​​​​异步加载​​​​进度条​​根据宣雨松前辈的教程来做的,因为我用到的场景不是在游戏里的那种(本人做增强现实的,完全把unity拿来做应......
  • 获取某地模型并用Cesium加载
     2023-01-04最近想用Cesium给学校做一个类似智慧校园的东西,要做的东西很多,首先是获取学校模型的问题,然后怎么用Cesium加载3Dtile 1.获取学校模型想到之前被老师抓苦......
  • Unity利用协同实现场景异步加载
    1.usingUnityEngine;2.usingSystem.Collections;3.4.publicclassFightTriggle:MonoBehaviour{5.privateAsyncOperationasync;6.i=0;7.......
  • Unity3D中Resources动态加载NGUI图片
    在NGUI中有些图片我需要动态进行变更或者加载,怎么办?首先在项目中创建一个Resources目录,接着把需要的图片放在这里面,可以有子文件夹么?当然可以,文件结构很重要哦~NGUI加载图片......
  • Assetbundle打包及加载入门详解(三)
                 主要讲Assetbundle的网络加载方式之前所讲的都是AssetBundle.LoadFromFile的方法,这是直接从硬盘上加载,而且属于同步加载。WWW.LoadF......
  • Assetbundle打包及加载入门详解(二)
    接着上篇,本节写如何更加科学的打包,以及打包中的一些依赖关系。科学打包:一般来说会把物体打成一个assetbundle包,把材质打成另个包,然后在加载的时候都加载出来。当然如果是有......
  • Assetbundle打包及加载入门详解(一)
    Assetbundle是unity的一种加载方式。这种加载可以从互联网上或者本地的文件夹中加载。要求被加载的文件必须是Assetbundle定义的格式首先制作Assetbundle:在project的Editor......
  • Day 06 模块加载机制
    模块加载机制一、优先从缓存中加载模块在第一次加载后会被缓存,多次调用require()不会导致模块的代码被执行多次不论内置模块、自定义模块、第三方模块都会从缓存中加载......
  • 构建Feign项目时候,装载bean失败,只加载到一个
    描述:加载过程当中发现注入的bean只会加载本地包下的实现。无法访问远程服务。解决方案:启动类加上@EnableFeignClients,开启feign的功能远程方法由于是实现api模块下......
  • Dtata:批量修改数据
    cd"d:\statashu"//usecfps2020person_202112,clear//usecfps2018person_202012,clearusemomshs,clearlist//+-------------------------+//|famidag......