首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

PHP 連接 MySQL 與 Oracle 效能比較測試報告

     編輯:MySQL 資料庫相關知識

測試環境

項目Windows NT 4.0 (SP5)BluePoint Linux 1.0
CPUCeleron 433 MHz同
記憶體128 MB同
硬碟20 GB同
Web ServerApache 1.3.12Apache 1.3.12
PHP3.0.15 / 4.0 RC14.0 RC1
MySQL3.22.293.22.32
Oracle8.0.5未安裝

測試資料表結構 (兩資料庫相同)

-- MySQL
CREATE TABLE board (
    board_id SMALLINT(6) NOT NULL AUTO_INCREMENT,
    board_name CHAR(16) NOT NULL,
    board_manager CHAR(20),
    PRIMARY KEY (board_id)
);

-- Oracle
CREATE TABLE board (
    board_id NUMBER,
    board_name CHAR(16) NOT NULL,
    board_manager CHAR(20)
);

測試程式碼核心邏輯

MySQL (PHP 4)

$dblink = mysql_connect("localhost", "root", "pass");
mysql_select_db("bbs");
$query = "INSERT INTO board (board_name, board_manager) VALUES ('test', 'test')";
$begin = time();
for ($i = 1; $i <= 10000; $i++) {
    mysql_db_query("bbs", $query);
}
$end = time();
echo "Total time: " . ($end - $begin) . " seconds";

Oracle (PHP 3 - 僅 PHP 3 支援 Oracle)

$conn = OCILogon("php_oracle", "php_oracle");
$stmt = OCIParse($conn, "INSERT INTO board (board_id, board_name, board_manager) VALUES (:id, 'test', 'test')");
OCIBindByName($stmt, ":id", $i, 32);
$begin = time();
for ($i = 1; $i <= 10000; $i++) {
    OCIExecute($stmt);
}
$end = time();
echo "Total time: " . ($end - $begin) . " seconds";

測試結果

環境PHP 版本資料庫10,000 筆 INSERT 耗時
Win32 + ApachePHP 4MySQL28 秒
Win32 + ApachePHP 3Oracle未提供 (文中斷)
LinuxPHP 4MySQL未提供 (文中斷)

作者結論與補充

  • 測試僅涵蓋 INSERT 操作,未測試 SELECT 效能。
  • Win32 下 PHP 4 當時不支援 Oracle,故無 PHP 4 + Oracle 數據。
  • Linux 下未安裝 Oracle,無對比數據。
  • 預期 PHP 4 正式版釋出後,Oracle 連接效能會有提升。
  • 測試程式碼已排除連線建立、SQL 解析等開銷,僅計算執行迴圈時間。

現代視角補充

此測試為 2000 年代初期數據,**僅具歷史參考價值**。現代環境下:

  • MySQL 8.0 / MariaDB 10 + PHP 8 + PDO + Prepared Statements + 連線池,單核心可輕鬆達到 10 萬+ INSERT/秒 (批次插入)。
  • Oracle 19c/21c + OCI8/PDO_OCI 同樣具極高效能,架構不同 (共用伺服器/專用伺服器) 影響較大。
  • 效能差異多取決於 **索引設計、交易控制、批次大小、網路延遲、儲存引擎/表空間配置**,而非單純資料庫品牌。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved