10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 本手册下载
PDF (Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册页(TGZ)- 262.1 kb
手册页(邮政编码)- 372.2 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——匙= 0中移动/ / 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做1插入

    • 连接5做1000插入

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

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

    插入加载数据还是比加载数据,即使使用刚才概述的策略。

  • 提高性能MyISAM表,都加载数据而且插入,将键缓存放大key_buffer_size系统变量。看到第5.1.1节,“配置服务器”