• 8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载到InnoDB 表


    8.5.5 Bulk Data Loading for InnoDB Tables 批量数据加载到InnoDB 表

    这个性能tips 补充常用的准则用于快速插入数据Section 8.2.2.1, “Speed of INSERT Statements”.

    当数据插入到InnoDB,关闭自动提交模式,因为它执行一个log flush 到磁盘在每次插入。

    关闭自动提交在你的导入操作

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

    mysqldump 选项 –opt 创建dump 文件快速导入到一个InnoDB 表,

    即使没有包装和设置autocommit和COMMIT 语句:

    如果你有一个唯一约束 在secondary keys,你可以加速表导入通过使用临时关闭 唯一检查在你导入的会话:

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

    对于大表,这个可以节约大量的磁盘 I/O, 因为InnoDB 可以使用它的change buffer

    来写 secondary index records in a batch. 确认数据没有重复

    如果你的表有FOREIGN KEY 约束在你的表里, 你可以加速表导入通过关掉外键约束在导入期间:

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

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

    Use the multiple-row INSERT syntax ,降低连接开销在客户端和服务端 如果你需要插入很多记录

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

    这个技巧是有效的对于插入到任何表,不只是InnoDB 表:

    当做批量插入表在 auto-increment columns, 设置innodb_autoinc_lock_mode 为2 代替默认值1

    为获得最佳性能,当加载数据到InnoDB FULLTEXT 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=latin1;

    CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID);

    Load the data into the table.

    Create the FULLTEXT index after the data is loaded.

  • 相关阅读:
    【判环】Perpetuum Mobile
    【计算几何】Water Testing
    【动态规划】Überwatch
    【规律】Cunning Friends
    【转载】【最短路Floyd+KM 最佳匹配】hdu 2448 Mining Station on the Sea
    【动态规划】Concerts
    【计算几何】The Queen’s Super-circular Patio
    【规律】Farey Sums
    【规律】Growing Rectangular Spiral
    Mancala II
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351259.html
Copyright © 2020-2023  润新知