MySQL以速度为目标_PHP教程
程序员文章站
2022-05-13 07:58:20
...
MySQL以速度为目标
--------------------------------------------------------------------------------
MySQL和PostgreSQL都是非常著名的数据库开放源码项目,而且都有取代商用数据库系统的趋势,但两者有着不同的设计目标。一般而言,如果需要更快的速度,可以优先考虑MySQL,而如果需要一些新的特色,那可以选择PostgreSQL。
目前MySQL由MySQL AB公司维护,其最新稳定版本为3.23,支持事务处理的3.23Max版也进入了Beta测试阶段,而它的最新开发版本4.0已经进入了Alpha测试阶段。它略显不寻常的许可费用,很容易让用户对它印象深刻。它的价格随平台和安装方式的不同而改变,其Windows版本在任何情况下都不免费,而对任何Unix/Linux版本,如果用户或系统管理员自己安装是免费的,第三方安装则必须支付许可费用。
MySQL是基于C/S体系结构的网络数据库管理系统。它的设计以速度为主要目标,可以快速处理多个用户的查询请求,在处理客户端连接时的速度也非常快,很适合用做Web站点的后台数据库。相对而言,PostgreSQL的执行速度比较慢,它对每个连接都生成一个子进程,而生成子进程、建立后台服务进程的步骤减慢了它的执行速度。MySQL的服务器功能很紧凑,各种复杂的功能处理(比如XML支持)完全被放到客户端进行,这使得增加功能时不会牺牲数据库服务器的速度和可靠性。而且它已被商业内存检测程序证明不存在内存泄露,连续中断和程序崩溃的现象也很罕见,在稳定性上比PostgreSQL要强一些。
在最初的设计阶段,MySQL主要面向中等规模的数据库,也就是说,数据库的规模大约有几千万行,每个表大约100MB。随着MySQL项目的发展,它的使用领域也逐渐扩展到TB规模的大型数据库和小型的手持或嵌入式设备领域。但是在短期内,MySQL不会支持实时数据库或大规模集群数据库。虽然在其3.23版本中,它通过MyISAM表,可以使系统在理论上能够支持8000PB的表。但由于操作系统的限制,在大部分Linux系统下,它仅能处理最大为2GB或4GB的表。在3.23版本中,还加入了支持大型服务器集群的复制、InnoDB的事务表处理器、Berkerley DB事务表处理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自动检查和修复、批量插入等新模块。
InnoDB和BDB事务表处理器的引入使MySQL中使用这些方式存储的数据表具有很好的事务处理能力。不过对于其他方式存储的表,使用原子操作维护完整性和一致性通常会损失一些性能。在完整性非常重要时,可以使用LOCK TABLES进行表锁定。从3.23.44开始,InnoDB表支持外码限制检查,不过它的使用,特别是误用外码可能会导致较严重的问题。
--------------------------------------------------------------------------------
MySQL和PostgreSQL都是非常著名的数据库开放源码项目,而且都有取代商用数据库系统的趋势,但两者有着不同的设计目标。一般而言,如果需要更快的速度,可以优先考虑MySQL,而如果需要一些新的特色,那可以选择PostgreSQL。
目前MySQL由MySQL AB公司维护,其最新稳定版本为3.23,支持事务处理的3.23Max版也进入了Beta测试阶段,而它的最新开发版本4.0已经进入了Alpha测试阶段。它略显不寻常的许可费用,很容易让用户对它印象深刻。它的价格随平台和安装方式的不同而改变,其Windows版本在任何情况下都不免费,而对任何Unix/Linux版本,如果用户或系统管理员自己安装是免费的,第三方安装则必须支付许可费用。
MySQL是基于C/S体系结构的网络数据库管理系统。它的设计以速度为主要目标,可以快速处理多个用户的查询请求,在处理客户端连接时的速度也非常快,很适合用做Web站点的后台数据库。相对而言,PostgreSQL的执行速度比较慢,它对每个连接都生成一个子进程,而生成子进程、建立后台服务进程的步骤减慢了它的执行速度。MySQL的服务器功能很紧凑,各种复杂的功能处理(比如XML支持)完全被放到客户端进行,这使得增加功能时不会牺牲数据库服务器的速度和可靠性。而且它已被商业内存检测程序证明不存在内存泄露,连续中断和程序崩溃的现象也很罕见,在稳定性上比PostgreSQL要强一些。
在最初的设计阶段,MySQL主要面向中等规模的数据库,也就是说,数据库的规模大约有几千万行,每个表大约100MB。随着MySQL项目的发展,它的使用领域也逐渐扩展到TB规模的大型数据库和小型的手持或嵌入式设备领域。但是在短期内,MySQL不会支持实时数据库或大规模集群数据库。虽然在其3.23版本中,它通过MyISAM表,可以使系统在理论上能够支持8000PB的表。但由于操作系统的限制,在大部分Linux系统下,它仅能处理最大为2GB或4GB的表。在3.23版本中,还加入了支持大型服务器集群的复制、InnoDB的事务表处理器、Berkerley DB事务表处理器接口、全文本搜索、MyODBC 2.5接口、MyISAM表的自动检查和修复、批量插入等新模块。
InnoDB和BDB事务表处理器的引入使MySQL中使用这些方式存储的数据表具有很好的事务处理能力。不过对于其他方式存储的表,使用原子操作维护完整性和一致性通常会损失一些性能。在完整性非常重要时,可以使用LOCK TABLES进行表锁定。从3.23.44开始,InnoDB表支持外码限制检查,不过它的使用,特别是误用外码可能会导致较严重的问题。
推荐阅读
-
【实战】如何通过html+css+mysql+php来快速的制作动态网页(以制作一个博客网站为列)
-
PHP编程技巧:以指定字段为索引返回数组数据_PHP教程
-
php批量删除数据库下指定前缀的表以prefix_为例,批量删除prefix_PHP教程
-
MySQL以速度为目标(zt)
-
工作笔记:配置MySQL为高可用集群 (1)_PHP教程
-
WinMySQLadmin 1.1 以明文形式存放 Mysql 密码漏洞-数据库相关-PHP教程-微
-
如何提高MYSQL数据库的查询统计速度 select 索引应用_PHP教程
-
以正方教务系统为例,用php模拟登陆抓取课表、空教室,抓取课表_PHP教程
-
用IP地址来统计访问人数!以天为间限!_PHP教程
-
影响PHP+MYSQL执行速度的写法对比第1/7页_PHP教程