我正在对mysql数据库进行一些性能测试。所有表都使用InnoDB引擎,mysql配置几乎是默认配置,没有设置特殊标志。
我有一个带有64 000个SQL INSERT的test.sql文件,它以INSERT INTO TableName(column1, column2) VALUES (value1, value2)
格式声明。
我通过在命令提示符中执行以下行在mysql客户端上运行此sql文件:
mysql -u username -ppassword db_name < test.sql
执行此操作时,文件的执行会在一分钟内完成。
在下一步中,我将64000个语句分成两个文件,每个文件有32 000行。在.bat文件中,我同时打开两个mysql
个客户端,一个运行包含第一部分的文件,另一个运行另一个文件。执行时间降至34秒。
所以我做了几次,时间大幅下降。通过向每行添加时间戳并减去最小值来完成测量。来自最大的时间戳时间戳。
在开始测量之前,我的猜测是运行任意数量的文件,如果总计数保持不变,则所有情况下的总时间几乎相同。 我对加快整体进口并不感兴趣,我很好奇是什么让时间下降如此之多?
测试在由this Xeon processor驱动的计算机上运行。
答案 0 :(得分:1)
它可以更快,因为每个线程锁定索引的不同部分。
尝试以下
echo "begin;" >/tmp/begin
echo "commit;">/tmp/commit
cat /tmp/begin test.sql /tmp/commit |mysql -u username -ppassword db_name
速度更快(开始时锁定一次)
答案 1 :(得分:0)
这可能是由于线程化,并且在多核系统上更加明显。并行处理事情会比一次处理事情更快。