做好一个网站从认识站长百科教程网开始!快来>>>文章投稿>>>个人中心
站长百科教程网:全方位站长技能、SEO优化学习平台!
当前位置:网站首页 > 站长百科 > 正文

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比

作者:admin发布时间:2023-11-22分类:站长百科浏览:58评论:0


导读:文章目录一、测试逻辑代码二、运行测试代码三、计算对比本文通过使用PHP循环插入1000次随机10位数字到mysql数据库来分析在php中使用mysqli和pdo的性能表现情况,来分...

文章目录


本文通过使用PHP循环插入1000次随机10位数字到mysql数据库来分析在php中使用mysqli和pdo的性能表现情况,来分析在php中使用pdo方式还是使用mysqli的方式更优秀。分析对比逻辑:循环1000次,每次生成一个10位数字,成功插入数据库以后,统计处理时间。每一种方式个执行5次,然后通过5次所消耗的时间来求平均值,最后以平均值大小来判断执行速度,速度快者性能更优秀。


一、测试逻辑代码:


<?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


运行以上测试代码,然后记录每次运行时间:


运行次数12345
PDO方式:6.5836.3136.8586.2546.142
Mysqli方式:6.3226.1716.6916.2206.307


PDO方式执行前:


在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第1张


使用PDO方式连续5次运行截图:


在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第2张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第3张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第4张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第5张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第6张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第7张


PDO方式运行代码结束后清空数据表,使用mysqli方式连续运行5次:


在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第8张



在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第9张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第10张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第11张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第12张

在PHP中使用pdo和mysqli方式与mysql数据库进行互动的性能对比  第13张

三、计算对比


PDO方式平均时间:6.43秒

Mysqli方式平均时间:6.3422秒


很诧异,在PHP中使用PDO方式处理同样的数据居然比使用Mysqli要稍微慢一点。本次测试Mysqli方式以微弱的优势胜出。不过本次测试只是单纯的数据插入测试,并不全面,测试环境也并不严谨、采样数据也不够丰富。


结论:在php中不管使用PDO方式还是Mysqli方式来处理mysql数据,性能表现不相上下,至少在本次测试插入数据的时间上相差不大。所以,对于我们普通站长来说,使用哪一种方式来处理mysql数据都是没有问题的。相对来说,使用PDO方式在更安全性上会更有优势一点。


欢迎 发表评论:

  • 请填写验证码
站长百科排行
    随机文章 | 热门文章 | 热评文章
搜索
热评文章
随机文章