1

我真的是 MySQL 新手,刚开始在我的 VPS 上使用 InnoDB 表引擎。

服务器信息: 4 x 2.4 ghz,8 Gb 内存,120gb Raid10。

我的.cfg:

[mysqld]
innodb_file_per_table=1
innodb_buffer_pool_size=4G
innodb_log_file_size=512M
innodb_flush_log_at_trx_commit=2

要插入的表有 6 个整数、1 个日期和 1 个用于映射的触发器 -> 将每行的 1 行插入到映射表中。

最后一行有助于加快插入速度(数据库是 80% 的插入/更新与 20% 的读取)。

但是当我做一些测试时,我在 webbrowser 中调用一个 PHP 文件,它将执行 10 000 次插入,大约需要 3 秒(这个硬件是快/慢吗?)。但是当我打开多个选项卡并同时打开PHP文件时,它们的执行时间都是3秒,但它们都在等待对方完成:/

任何想法我应该添加哪些设置?或者我应该为更快的插入添加的其他设置非常感谢!

4

1 回答 1

1

每秒 3,300 次插入是相当可观的,尤其是在使用触发器的情况下。如果不了解表格,就很难了解更多信息。

你对提交做了什么?你是在做所有 10K 插入然后提交一次吗?如果是这样,在每个客户端运行之前,执行类似任务的其他客户端可能会被锁定。这是一个特点!

另一方面,如果您使用自动提交,那么您的 MySQL 服务器就会流失。

最好的策略是插入 100 或 500 行之类的块,然后提交。

您应该尝试解决这种锁定,而不是通过配置设置,而是通过调整您的 web php 应用程序来仔细管理事务。

如果您不需要此应用程序的健壮事务语义,您可能需要考虑使用 MyISAM 表。MyISAM 可以更快地处理大量插入。也就是说,如果您不特别关心您读取的是当前数据还是几秒钟前的数据,那么 MyISAM 将为您提供良好的服务。

于 2013-06-26T20:03:50.257 回答