一个快速查看系统上 MySQL 版本中内置的哪些 DBA 处理程序(不包含版本号)的方法,使用 var_dump 以及 dba_handler(),如下所示
<?php
var_dump ( "dba_handlers()" );
?>
许多发行版默认情况下会内置这些 DBA 处理程序
array(5) { [0]=> string(3) "cdb" [1]=> string(8) "cdb_make" [2]=> string(3) "db4" [3]=> string(7) "inifile" [4]=> string(8) "flatfile" }
使用 print 和 pre 标签以提高可读性
array(5) {
[0]=>
string(3) "cdb"
[1]=>
string(8) "cdb_make"
[2]=>
string(3) "db4"
[3]=>
string(7) "inifile"
[4]=>
string(8) "flatfile"
}
请注意,没有为 GDBM 或 QDBM 构建的情况下,dba_insert 和 dba_replace 会出现问题。
以下是 DBA 处理程序列表的两个来源:(http://www.php-editors.com/php_manual/ref.dba.html 和 http://dewa03.unep.org/manuals/php_manual/ref.dba.html; )
CDBM & CDB 编译在更新方面存在问题,您可以读取数据库并写入新的数据库文件,但您将无法使用 dba_replace(),并且您可能在使用 dba_insert() 时遇到问题。
NDBM & DBM 已被弃用。
DB2、DB3 & DB4(Berkeley DB Sleepycat Software / Oracle)在线阅读过有关 dba_replace() 和 db4 特定问题的信息。确保您测试安装是否正确使用所有 DBA 函数。
我在网上找到的大多数资料中都没有列出 SDBM、TDB、TinyCDB。这些 DBA 处理程序及其开发人员名称在 QDBM 的 SourceForge 网站上列出。我不知道它们如何与 dba_replace() 互动。您应该知道它们的存在。
GDBM 和 QDBM 是我所知的另外两个 DBA 处理程序。据报告,两者都允许 PHP 的 dba_replace() 函数正常工作,因此任何一个都是可接受的选择。传统 DBM 的以下三个限制对于 GDBM 或 QDBM 来说都不是问题:1) 一个进程只能处理一个数据库;2) 键和值的尺寸是有限制的;3) 数据库文件是稀疏的。
DBA 处理程序基准测试比较了 QDBM、GDBM、NDBM、SDBM、TDB、CDB、BDB、QDBM-BT-ASC、QDBM-BT-RND、BDB-BT-ASC、BDB-BT-RND,可以在这里找到:(http://qdbm.sourceforge.net/benchmark.pdf);
QDBM 似乎在速度方面比其他 DBA 处理程序有了显著提高,请在您的环境中测试以验证结果。