Вибір бібліотеки

Модулі mysqli та PDO_MySQL - лише легковажні обгортки над бібліотеками написаними мовою C. Ці модулі можуть використовувати бібліотеки mysqlndиlibmysqlclient. Вибір бібліотеки потрібно зробити на етапі компіляції.

Бібліотека mysqlnd є частиною дистрибутива PHP. Вона надає такі можливості як ліниве з'єднання (lazy connections) та кешування запитів. У бібліотеці libmysqlclient ці можливості недоступні. Тому вкрай рекомендується використовувати саме вбудовану бібліотеку mysqlnd. Для додаткової інформації дивіться документацію mysqlnd

Приклад #1 Команди конфігурування для mysqlnd та libmysqlclient

//Рекомендована, компілює з mysqlnd $ ./configure --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd

//Рекомендована, компілює з mysqlnd $ ./configure --with-mysqli --with-pdo-mysql

//Не рекомендована, компілює з libmysqlclient $ ./configure --with-mysqli=/path/to/mysql_config --with-pdo-mysql=/path/to/mysql_config

Порівняння можливостей бібліотек

Рекомендується використовувати бібліотеку mysqlnd, а не MySQL Client Server library (libmysqlclient). Обидві бібліотеки розвиваються та підтримуються виробниками.

MySQL native driver (mysqlnd)MySQL client server library (libmysqlclient)
Частина дистрибутива PHPТакНі
З'явилася у версії PHP5.3.0Немає даних
ЛіцензіяPHP License 3.01Подвійна ліцензія
Статус розробкиАктивнийАктивний
Життєвий циклЗакінчення не анонсованоЗакінчення не анонсовано
Компілювання за промовчанням (для всіх модулів MySQL)ТакНі
Підтримка протоколу стисненняТакТак
Підтримка SSLТакТак
Підтримка іменованих конвеєрів (named pipes)ТакТак
Неблокуючі, асинхронні запитиТакНі
Статистика продуктивностіТакНі
LOAD LOCAL INFILE поважає директиву open_basedirТакні
Використовує штатний менеджер пам'яті PHP (тобто обмеження пам'яті PHP)ТакНі
Повертає числові значення як значення з плаваючою точкою (float) (COM_QUERY)Такні
Повертає числові значення як рядки (string) (COM_QUERY)ТакТак
Підтримка плагінівТакОбмежено
Автоматичне перепідключенняніопціонально