我是MySQL的新手,刚开始在我的VPS上使用InnoDB表引擎。
服务器信息: 4 x 2.4 ghz,8 Gb ram,120 gb Raid10。
My.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秒的执行时间,但它们正在等待彼此完成:/
我应该添加哪些设置?或者我应该为快速插入添加的其他设置非常感谢!
答案 0 :(得分:1)
每秒3,300次插入是非常值得尊敬的,尤其是触发器。如果不理解表格,就很难了解更多相关信息。
你在做什么提交?你正在做所有10K插入然后提交一次吗?如果是这样,执行类似任务的其他客户端可能会锁定,直到每个客户端运行。这是一个功能!
另一方面,如果您正在使用自动提交,那么您将使MySQL服务器流失。
最好的策略是插入100或500行的块,然后提交。
你应该尝试使用配置设置来解决这种锁定问题,而是通过调整你的web php应用程序来仔细管理事务。
如果您不需要此应用程序的强大事务语义,您可能需要考虑使用MyISAM表。 MyISAM可以更快地处理大量插入物。也就是说,如果您不特别在意您是否阅读了当前或几秒钟的数据,那么MyISAM将为您提供良好的服务。