10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国高级主任)- 41.2 mb
PDF (A4)- 41.3 mb
PDF (RPM)- 39.5 mb
HTML下载(TGZ)- 9.3 mb
HTML下载(Zip)- 9.3 mb
HTML下载(RPM)- 7.8 mb
手册页(TGZ)- 260.6 kb
手册页(Zip)- 371.8 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

MySQL 8.0参考手册/.../ MyISAM表的批量数据加载

8.6.2 MyISAM表批量数据加载

这些性能技巧补充了快速插入的一般准则第8.2.5.1节,优化INSERT语句

  • 对于一个MyISAM表中,可以使用并发插入同时添加行选择如果数据文件中间没有被删除的行,则语句正在运行。看到第8.11.3节“并发插入”

  • 通过一些额外的工作,这是有可能的加载数据跑得再快一点MyISAM表,当表有多个索引时。请使用以下步骤:

    1. 执行一个刷新表语句或mysqladmin刷新表命令。

    2. 使用Myisamchk——keys-used=0 -rq/ / db / tbl_name /路径删除对表索引的所有使用。

    3. 将数据插入表中加载数据.这不会更新任何索引,因此非常快。

    4. 如果将来只打算从表中读取,请使用myisampack压缩它。看到第16.2.3.3节“压缩表特征”

    5. 重新创建索引myisamchk rq/ / db / tbl_name /路径.这将在将索引树写入磁盘之前在内存中创建索引树,这比在此期间更新索引快得多加载数据因为它避免了大量的磁盘查找。生成的索引树也是完美平衡的。

    6. 执行一个刷新表语句或mysqladmin刷新表命令。

    加载数据,则自动执行上述优化MyISAM要插入数据的表为空。自动优化和显式使用过程之间的主要区别是您可以让myisamchk方法时,为索引创建分配的临时内存要比您希望服务器为索引重新创建分配的内存多得多加载数据声明。

    属性的非唯一索引也可以禁用或启用MyISAM表中使用下列语句而不是myisamchk.如果使用这些语句,可以跳过刷新表操作:

    ALTER TABLEtbl_name禁用键;ALTER TABLEtbl_name使键;
  • 加快速度插入对于非事务性表,使用多条语句执行的操作将锁定您的表:

    锁表写入;INSERT INTO a VALUES (1,23),(2,34),(4,33);INSERT INTO a VALUES (8,26),(6,29);...打开表;

    这有利于性能,因为索引缓冲区毕竟只刷新到磁盘一次插入报表已完成。正常情况下,索引缓冲区刷新的次数应该与当前的次数一样多插入语句。如果可以用单个锁语句插入所有行,则不需要显式锁语句插入

    锁定还降低了多个连接测试的总时间,尽管单个连接的最大等待时间可能会因为等待锁定而增加。假设5个客户端试图同时执行插入,如下所示:

    • 连接1执行1000个插入

    • 连接2、3和4进行一次插入

    • 连接5执行1000个插入

    如果不使用锁定,连接2、3和4将在1和5之前结束。如果使用锁定,连接2、3和4可能不会在1或5之前完成,但总时间应该快40%左右。

    插入更新,删除MySQL的操作非常快,但是你可以通过对所有连续插入或更新超过5次的操作添加锁来获得更好的整体性能。如果你做很多连续的插入,你可以做锁表接着是打开表每隔一段时间(每1000行左右)允许其他线程访问表。这仍然会带来不错的性能提升。

    插入加载数据仍然比加载数据即使是在使用刚才概述的策略时。

  • 提高性能MyISAM表格,两者都有加载数据而且插入,通过增加key_buffer_size系统变量。看到第5.1.1节“配置服务器”