前文讲到了我使用SQL Server数据库时候,使用一段循环代码压测数据库写入性能的例子。
今天记录下与MySql的区别。mysql不支持直接使用sql可视化Navicat管理工具输入这样一段循环体执行,因此想了个办法讲循环体使用存储过程包裹起来,调用存储过程来测试循环写入表的效果。
数据库表结构准备
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `testtable`;
CREATE TABLE `testtable` (
`testKey` varchar(50) DEFAULT NULL,
`testValue` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
循环写入语句:
drop procedure if exists test_insert;
CREATE PROCEDURE test_insert ()
BEGIN
DECLARE i INT DEFAULT 0;
while i<1000
do
#插入一行
INSERT INTO TestTable
( TestKey , TestValue )
VALUES
( now(),'0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789' );
set i = i+1;
end while;
end;
set @starttime=now();
call test_insert();
SELECT TIMESTAMPDIFF(SECOND,@starttime,now()) as '执行时间(秒)';
drop procedure if exists test_insert;
测试结果有点不太理想,mysql在ssd硬盘下,写入10000条居然耗时34秒,每秒才不到300。跟sql server类似的写法性能相差很大,不清楚是哪个因素可以影响到。
原文地址:
https://www.opengps.cn/Blog/View.aspx?id=428
文章的更新编辑依此链接为准。欢迎关注源站原创文章!