本文通过使用PHP循环插入1000次随机10位数字到mysql数据库来分析在php中使用mysqli和pdo的性能表现情况,来分析在php中使用pdo方式还是使用mysqli的方式更优秀。分析对比逻辑:循环1000次,每次生成一个10位数字,成功插入数据库以后,统计处理时间。每一种方式个执行5次,然后通过5次所消耗的时间来求平均值,最后以平均值大小来判断执行速度,速度快者性能更优秀。
一、测试逻辑代码:
PHP
<?php
// 设置数据库连接参数
if ($_GET != NULL) {
$id = $_GET['id'];
} else {
$id = 1;
}
$db_host = '127.0.0.1';
$db_user = 'test';
$db_pass = 'test';
$db_name = 'test';
// PDO方式
if ($id == 1) {
try {
// 创建数据库连接
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass);
// 设置 PDO 错误模式,以抛出异常
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// 开始时间
$start_time = microtime(true);
for ($i = 0; $i < 1000; $i++) {
$str = rand(10000000000, 9999999999);
$sql = "INSERT INTO test (test) VALUES (:test)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':test', $str);
$stmt->execute(); // 执行插入操作
}
// 结束时间
$end_time = microtime(true);
// 使用的时间
$execution_time = $end_time - $start_time;
$execution_time = number_format($execution_time, 3); // 只保留三位小数
echo "PDO方式循环插入1000次随机10位数字,耗时:" . $execution_time . '秒';
} catch (PDOException $e) {
// 如果连接过程中发生错误,则捕获异常并输出错误信息
echo "数据库连接失败: " . $e->getMessage();
}
} elseif ($id == 2) {
// mysqli方式
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$start_time_mysqli = microtime(true);
for ($i = 0; $i < 1000; $i++) {
$str = rand(10000000000, 9999999999);
$sql = "INSERT INTO test (test) VALUES ('$str')";
$conn->query($sql);
}
$end_time_mysqli = microtime(true);
$execution_time_mysqli = $end_time_mysqli - $start_time_mysqli;
$execution_time_mysqli = number_format($execution_time_mysqli, 3); // 只保留三位小数
echo "Mysqli方式循环插入1000次随机10位数字,耗时:" . $execution_time_mysqli . '秒';
$conn->close();
} else {
// 其他操作
}
?>
二、运行测试代码
测试环境:
操作系统:CentOS Stream 8 x86_64(Py3.7.9)
PHP版本:PHP8.1
Mysql版本:MySQL 5.7.41
运行以上测试代码,然后记录每次运行时间:
PDO方式执行前:
使用PDO方式连续5次运行截图:
PDO方式运行代码结束后清空数据表,使用mysqli方式连续运行5次:
三、计算对比
PDO方式平均时间:6.43秒
Mysqli方式平均时间:6.3422秒
很诧异,在PHP中使用PDO方式处理同样的数据居然比使用Mysqli要稍微慢一点。本次测试Mysqli方式以微弱的优势胜出。不过本次测试只是单纯的数据插入测试,并不全面,测试环境也并不严谨、采样数据也不够丰富。
结论:在php中不管使用PDO方式还是Mysqli方式来处理mysql数据,性能表现不相上下,至少在本次测试插入数据的时间上相差不大。所以,对于我们普通站长来说,使用哪一种方式来处理mysql数据都是没有问题的。相对来说,使用PDO方式在更安全性上会更有优势一点。
发表评论 取消回复