8 月 25 2010
PHP 的 mysqlnd(MySQL Native Driver)
PHP 自 5.3.0 開始,引入 mysqlnd 這個 extension。
在 5.3.0 的 Full ChangeLog 中可以看到這行:
Added mysqlnd extension as replacement for libmysql for ext/mysql, mysqli and PDO_mysql. (Andrey, Johannes, Ulf)
依照個人的過往經驗,native driver 的效能都會比較好,而 mysqlnd 也不例外(有興趣的可以看看這篇文章)。
比較可惜的是,mysqlnd 在 Windows 平台的 PHP 是預設套件;在 *NIX 平台,使用前必須在編譯前就先做好設定(configure;參數可參考 PHP 官方的mysqlnd 安裝文件)。
剛才,很高興看到 FreeBSD 的 PHP5 ports 加入了 option,讓我們可以輕鬆搞定。
3 月 2 2012
MySQL 的 max key length
我曾試著在 MYISAM 格式的 table 裡,把兩個 VARCHAR(255),UTF8 編碼的欄位設定成一組 UNIQUE KEY。
當時遇到這個 Error:
VARCHAR(255) 代表該欄位可以紀錄 255 個字元,每個字元以 UTF8 encoded 儲存,一個欄位可以佔用 765 bytes,所以兩個欄位總和超過 1000 bytes,無法設為一組 UNIQUE KEY。
前陣子,我把 MySQL 從 5.1 系列升版到 5.5 系列。
在 5.1(含)之前,MySQL 使用 3 個 bytes 紀錄 UTF8 encoded data。
開發團隊在 MySQL 5.5.3 加入了 utf8mb4 編碼,用 4 個 bytes 紀錄 UTF8 encoded data,支援更多的文字。
utf8mb4 讓我聯想到 max key length 的問題,所以進行了一些小測試,並追了一下 source code。
從目前的最新版本的 source code 看來:
By Joe Horn • Database 0 • Tags: MySQL