PDO có nhanh hơn MySQLi không?

Chào mừng bạn đến với hướng dẫn nhanh về sự khác biệt giữa MySQL, MySQLi và PDO trong PHP. Vì vậy, bạn có thể mới bắt đầu làm việc với MySQL trong PHP và nhận thấy rằng có 3 phần mở rộng khác nhau để làm việc với cơ sở dữ liệu

Sự khác biệt chính giữa các phần mở rộng MySQL, MySQLi và PDO là

  • MySQL – Tiện ích mở rộng PHP-MySQL đời đầu, hiện không còn tồn tại và đã bị xóa
  • MySQLi (MySQL Cải tiến) – Một phiên bản cải tiến của phần mở rộng MySQL trước đó
  • Đối tượng dữ liệu PHP (PDO) – Phần mở rộng cơ sở dữ liệu hiện đại. Không chỉ hỗ trợ MySQL mà còn các cơ sở dữ liệu khác như Firebird, SQLite, Postgre, v.v.

Vâng, cái gọi là “sự khác biệt” thực chất là lịch sử phát triển của các phần mở rộng MySQL trong chính PHP. Nhưng cái nào đúng, cái nào “tốt hơn” và bạn nên dùng cái nào?

ⓘ Tôi đã bao gồm một tệp zip chứa tất cả mã nguồn khi bắt đầu hướng dẫn này, vì vậy bạn không cần phải sao chép-dán mọi thứ… Hoặc nếu bạn chỉ muốn đi sâu vào

 

 

MỤC LỤC

PDO có nhanh hơn MySQLi không?
Tải xuống & Ghi chú

PDO có nhanh hơn MySQLi không?
Tiện ích mở rộng PHP MySQL

PDO có nhanh hơn MySQLi không?
Bit bổ sung & liên kết

PDO có nhanh hơn MySQLi không?
Kết thúc

 

TẢI XUỐNG & LƯU Ý

Đầu tiên, đây là liên kết tải xuống mã nguồn ví dụ như đã hứa

 

GHI CHÚ NHANH

  • Vui lòng đảm bảo rằng
    3,
    4 hoặc
    5 tương ứng được bật trong
    6
  • Tạo cơ sở dữ liệu thử nghiệm và nhập
    7
  • 8, 
    0 và
    1 sẽ hiển thị các ví dụ tương ứng của từng tiện ích mở rộng. Chỉ cần nhớ thay đổi cài đặt cơ sở dữ liệu trong tập lệnh
Nếu bạn phát hiện ra một lỗi, hãy bình luận bên dưới. Tôi cũng cố gắng trả lời các câu hỏi ngắn, nhưng đó là một người so với cả thế giới… Nếu bạn cần câu trả lời gấp, vui lòng xem danh sách các trang web của tôi để được trợ giúp về lập trình

 

MÃ VÍ DỤ TẢI XUỐNG

Nhấp vào đây để tải xuống mã nguồn, tôi đã phát hành nó theo giấy phép MIT, vì vậy hãy thoải mái xây dựng trên mã nguồn hoặc sử dụng nó trong dự án của riêng bạn

 

 

MỞ RỘNG PHP MYSQL

Được rồi, bây giờ chúng ta hãy xem các ví dụ về cách sử dụng từng phần mở rộng cơ sở dữ liệu MySQL. Ngoài ra, một bài kiểm tra đơn giản “phi khoa học phi chuyên nghiệp” để xem cái nào hoạt động tốt nhất

 

MỞ ĐẦU) CƠ SỞ DỮ LIỆU GIẢ

0-hình nộm. sql

-- (A) USERS TABLE
CREATE TABLE `users` (
  `id` bigint(20) NOT NULL,
  `name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
 
ALTER TABLE `users`
  ADD PRIMARY KEY (`id`);
 
ALTER TABLE `users`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;
 
-- (B) DUMMY USERS
INSERT INTO `users` (`id`, `name`) VALUES
(1, 'Bevis'),
(2, 'Cally'),
(3, 'Harrison'),
...

Nếu bạn muốn chạy "thử nghiệm hiệu suất không kết luận", đây là bảng giả mà chúng tôi đang sử dụng, hãy tải xuống tệp zip ở trên

 

PHẦN 1) PHẦN MỞ RỘNG MYSQL DI SẢN

1-mysql. php

Giờ đây, tiện ích mở rộng MySQL (gốc) đã bị xóa hoàn toàn trong PHP 7. Vì vậy, tôi sẽ chỉ để điều này ở đây như một ví dụ cho những người có thể cần hỗ trợ các hệ thống cũ. Nếu không, vui lòng không sử dụng tiện ích mở rộng đã lỗi thời này nữa

 

 

PHẦN 2) MỞ RỘNG MYSQLI

2-mysqli. php

connect_error) { exit($mysqli->connect_error); }
$mysqli->set_charset(DB_CHARSET);
 
// (C) SELECT USERS
$result = $mysqli->query("SELECT * FROM `users`");
while ($row = $result->fetch_assoc()) { print_r($row); }
$result->close();
$mysqli->close();
 
// (TEST) TOTAL TIME TAKEN
$taken = microtime(true) - $taken;
echo "Total time taken $taken";

Đúng vậy, điều này khá giống với MySQL truyền thống, điểm khác biệt duy nhất là chúng tôi đang sử dụng

2 thay thế. Đối với việc sử dụng, chỉ cần theo dõi qua tập lệnh, nó đơn giản nhất có thể

 

 

PHẦN 3) MỞ RỘNG PDO

3-pdo. php

 PDO::ERRMODE_EXCEPTION,
  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);

// (C) SELECT USERS
$stmt = $pdo->prepare("SELECT * FROM `users`");
$stmt->execute();
while ($row = $stmt->fetch()) { print_r($row); }
if ($stmt !== null) { $stmt = null; }
if ($pdo !== null) { $pdo = null; }

// (TEST) TOTAL TIME TAKEN
$taken = microtime(true) - $taken;
echo "Total time taken $taken";

Bây giờ, ví dụ PDO này cũng rất đơn giản. Nhưng cái hay của PDO thực sự nằm ở khả năng tương thích với nhiều loại cơ sở dữ liệu – Nghĩa là, tiện ích mở rộng này hoạt động với nhiều cơ sở dữ liệu khác ngoài MySQL. Ngoài ra, có nhiều cách thông minh để tìm nạp các mục nhập bằng cách sử dụng PDO –

3,
4,
5 và thậm chí xuống để thiết lập cách sắp xếp mảng

 

 

BIT BỔ SUNG & LIÊN KẾT

Đó là tất cả cho hướng dẫn này và đây là một phần nhỏ về một số tính năng bổ sung và liên kết có thể hữu ích cho bạn

 

CÁI NÀO TỐT HƠN"?

Đối với một thử nghiệm đơn giản, tôi đã chạy

0 và
1 trên máy chủ phát triển của mình, tìm nạp 100 người dùng 10 lần. Thời gian trung bình như sau

  • MySQLi – 0. 0096925020217896 giây
  • PDO – 0. 015011477470398 giây

Đúng vậy, có một sự khác biệt trong tích tắc về hiệu suất. Cá nhân tôi sẽ không làm ầm lên về nó, nhưng nếu bạn thích “các bài kiểm tra hiệu suất chuyên nghiệp khoa học” – Vui lòng nghĩ ra bộ bài kiểm tra của riêng bạn (và cho chúng tôi biết kết quả)

 

MYSQL, MYSQLI, PDO – TÔI NÊN SỬ DỤNG CÔNG CỤ NÀO?

Tôi thực sự khuyên bạn nên sử dụng PDO. Đơn giản vì nó hỗ trợ nhiều loại cơ sở dữ liệu và tính trừu tượng mà nó cung cấp. Chúng tôi chỉ cần bật tiện ích mở rộng PDO tương ứng trong

6 và dự án đã sẵn sàng hoạt động với các cơ sở dữ liệu khác ngoài MySQL. Ví dụ: “nâng cấp” từ MySQL lên Cơ sở dữ liệu Oracle

 

TÀI LIỆU THAM KHẢO và LIÊN KẾT

  • PDO – PHP
  • MySQLi – PHP
  • Mysql-PHP
  • phpMyAdmin – Trình quản lý cơ sở dữ liệu PHP miễn phí. Nếu bạn đã cài đặt gói XAMPP, gói này đã được cài đặt tại
    9
  • MySQL Workbench – Cái gọi là trình quản lý cơ sở dữ liệu MySQL chính thức của chính Oracle

 

KẾT THÚC

Cảm ơn bạn đã đọc, và chúng tôi đã đi đến phần cuối của hướng dẫn này. Tôi hy vọng rằng nó đã giúp bạn với dự án của bạn và nếu bạn muốn chia sẻ bất cứ điều gì với hướng dẫn này, xin vui lòng bình luận bên dưới. Chúc may mắn và mã hóa hạnh phúc

PDO có an toàn hơn MySQLi không?

PDO an toàn hơn hai tùy chọn đầu tiên và nó cũng nhanh hơn so với MySQLi theo thủ tục và hướng đối tượng MySQLi. PDO là lớp truy cập cơ sở dữ liệu cung cấp giao diện nhanh và nhất quán để truy cập và quản lý cơ sở dữ liệu trong các ứng dụng PHP.

Lợi thế của PDO hoặc MySQLi là gì?

Hỗ trợ cơ sở dữ liệu . Tại thời điểm viết bài này, PDO hỗ trợ 12 trình điều khiển khác nhau, trái ngược với MySQLi, chỉ hỗ trợ MySQL. database driver support. At the time of this writing, PDO supports 12 different drivers, opposed to MySQLi, which supports MySQL only.

Sự khác biệt giữa PDO và MySQLi là gì?

MySQLi là sự thay thế cho các chức năng mysql, với các phiên bản thủ tục và hướng đối tượng. Nó có hỗ trợ cho báo cáo chuẩn bị. PDO (Đối tượng dữ liệu PHP) là lớp trừu tượng cơ sở dữ liệu chung với sự hỗ trợ cho MySQL trong số nhiều cơ sở dữ liệu khác

MySQLi có nhanh hơn MySQL không?

Quá trình cài đặt với MySQLi không chỉ dễ dàng mà còn tự động khi gói PHP5 MySQL được cài đặt trong Windows hoặc Linux. MySQLi hoạt động nhanh hơn (một chút) so với đối thủ cạnh tranh . Với câu lệnh không chuẩn bị, hệ thống thực hiện ~2. nhanh hơn 5% và ~6. Nhanh hơn 5% với những cái đã chuẩn bị.