技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-1-InterBase与MySQL技术对比英巴卡迪诺科技公司数据库产品部BillTodd撰写2010年8月美国总部地址100CaliforniaStreet,12thFloorSanFrancisco,California94111EMEA区总部地址YorkHouse18YorkRoadMaidenhead,BerkshireSL61SF,UnitedKingdom亚太区总部地址L7.
313LaTrobeStreetMelbourneVIC3000Australia技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-2-目录执行摘要.
3引言3为您的项目选择适当的数据库4MySQL:选择太多4在线备份.
6恢复速度.
6物有所值的数据类型.
6数据域6角色.
7字符串7默认值7检查约束.
9监控.
9配置.
9复制.
10特性对比.
10结论11关于作者.
12技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-3-执行摘要Embarcadero_InterBase是一款性能强大且兼容SQL的数据库,通常嵌入应用程序使用并用于特定应用.
优秀的开发人员和应用架构师在仔细检测InterBase后发现,该数据库明显优于MySQL.
其优势包括:在线备份更快的故障恢复用于精确财务计算的数据类型通过数据域简化设计和维护通过角色更加便捷地进行访问控制支持虚拟表格和行级访问控制的视图符合ANSI标准且更加简单的字符串数据类型更加强大灵活的默认值利用检查约束简化数据验证卓越的性能监控工具经过优化的配置选项多向复制本白皮书详细论述了以上优势.
引言当前的许多数据库应用程序都需要使用一款能够嵌入应用程序或能够轻松在远程站点进行部署和支持的数据库.
InterBase具备所有这些性质,以及高性能、可靠性和精密的特性集,是一款能够满足开发人员需求的成熟数据库,多年来已成功部署于全球数百万站点.
InterBase易于部署、学习和使用,用户几乎无需在生产环境中对其进行任何维护和监控.
InterBase的安装大小仅为MySQL的五分之一,但却提供SMP支持、跨平台支持、基于成本的精密型查询优化器、行级锁、瞬时服务器故障恢复、基于隔离级别的事务支持(确保在某一时间点上生成一致的数据快照)、存储过程、触发器、视图、检查约束、丰富的SQL方言、在线备份、在线元数据修改、复制,并且能够通过数据库中的触发器触发客户端应用程序中的事务.
InterBase能够通过以下特性降低开发及维护成本:数据域检查约束角色更加简单的配置卓越的性能监控工具多向复制如果没有这些特性,您便会花费更多时间编写客户端代码,以执行应该集成在数据库技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-4-中的功能,并在多项维护任务上浪费更多时间,例如:控制访问、重新编译及部署客户端应用程序、配置数据库以满足特定站点的负载需求.
为您的项目选择适当的数据库列出数据库项目所需的特性并非难事.
但是,仅根据一份简单的特性列表对数据库进行评估是远远不够的.
在为您的应用程序选择适当的数据库时,最重要的步骤是比较各款数据库在实际应用程序环境中的性能.
该白皮书对比了InterBase和MySQL在当前业务环境可能出现的多种情景中的性能.
MYSQL:选择太多情景:您正在开发一款能够显著降低公司成本的应用程序.
该应用程序必须支持快速部署,这主要是为了最大限度地缩短学习和开发时间.
MySQL包含四个数据库引擎而非一个,因此,您需要做出的第一项决定便是使用哪个可用的数据库引擎1.
每个引擎均采用不同的表结构(不同的磁盘文件格式)并具有不同的特性.
不同之处不仅仅是数据访问和同步控制特性;管理需求也不尽相同.
例如,随着硬件和操作系统的更新,可能必须将数据库迁移至服务器中的另一目录.
BerkeleyDB数据库引擎将全路径嵌入表头中的表格,因此你无法将表文件移至新的目录.
你必须导出数据,并在新的位置创建一个新的数据库,然后重新导入数据.
但是,InnoDB和MyISAM数据库却可移至新的目录.
由于各个数据库引擎的功能差异巨大,因此,你必须在决定前对应用程序的需求和各个引擎的功能进行仔细比较.
这项评估会增加你的项目时间和成本.
以下内容简要介绍了不同的数据库引擎.
ISAM引擎是MySQL的原始数据库引擎.
该引擎已被弃用并被MyISAM引擎取代,因此,可以忽略ISAM.
1MySQL5.
5参考手册第13章.
技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-5-MyISAM引擎经过专门设计能够实现高效的SELECT查询,并且是唯一支持全文本检索的表格式.
MyISAM还可以最灵活的方式添加自动递增字段.
然而,MyISAM并不支持事务控制、声明性引用完整性、存储过程或触发器.
MyISAM引擎连续处理查询,并为INSERT、UPDATE和DELETE语句赋予比SELECT语句更高的优先级.
专用的表锁提供同步访问.
在执行INSERT、UPDATE或DELETE语句时,其它用户不可读写任何正发生变更的表行.
目前的数据库应用程序通常支持混合读写.
如果你的应用程序需要分析数据或生成大型报表,SELECT语句的运行时间可能会相对较长.
假设你拥有一个订单录入系统.
打印发票时,你必须查询"客户"表,以获取姓名、地址和其它客户信息.
你还需要将"客户"表导入"订单"表、"项目"表和"零件"表,以获取有关订单、订单项目、零件价格及描述的信息.
由于MyISAM禁止对正在读取的表进行更新,因此,用户无法在发票查询完成前更新"客户"、"订单"、"项目"或"零件"表.
如果你的应用程序需要执行许多INSERT、UPDATE和DELETE语句,用户可能会在执行SELECT语句时遇到麻烦.
由于MyISAM是顺序处理语句,并且优先处理修改数据的SQL语句,之后再处理SELECT语句,因此,执行SELECT语句的用户在遇到大量的更新操作时可能会遭遇低效率.
BerkeleyDB(BDB)数据库引擎提供了事务支持,但仅支持read-committed事务隔离级别.
这意味着获得一致数据视图的唯一方式是对表进行锁定,避免出现更新.
由于BDB采用页级锁,因此其同步性高于MyISAM表,但在更新单行时,它仍会锁定整个数据页.
BDB不支持声明性引用完整性或全文本索引.
此外,指向每个BDB表文件的全路径被保存在该文件中.
因此不能将这些文件移至新目录.
如果需要移动BDB数据库,你必须导出所有数据,在新的位置创建一个新的数据库,然后重新导入数据.
性能最强的MySQL数据库引擎是由位于赫尔辛基的InnoBaseOy公司开发并随后被Oracle公司收购的InnoDB引擎.
InnoDB支持事务控制、声明性引用完整性、多事务隔离级别和行级锁.
在MySQL5.
5中,InnoDB将是默认的MySQL引擎.
由于InnoDB引擎的功能最丰富,因此,除非另行说明,否则此白皮书均假设MySQL采用InnoDB数据库引擎.
InterBase提供了一个单一、集成的SQL数据库服务器,其中具有一套一致的特性.
因此,将InterBase与你的需求进行比较非常容易.
技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-6-在线备份情景:你正在创建一个零售点应用程序.
每家店铺每天必须至少备份一次数据库.
店铺经理在家中保存一份备份文件,作为灾难恢复计划的一部分.
多家零售店全天24小时营业.
唯一支持在线备份的MySQL数据库引擎是InnoDB2.
为了在数据库运行时备份InnoDB数据库,你可以每年300美元从Zmanda购买EnterpriseZRMforMySQL的许可.
InterBase引擎内置"在线备份"功能.
你可以随时备份数据库,而且备份功能会在启动时立即提供一个逻辑上一致的数据副本.
你可以通过调出InterBaseAPI函数将备份功能添加进你的应用程序,使用IBConsole(InterBaseGUI开发工具)进行手动备份,或使用命令行备份工具将备份功能添加进批处理文件或脚本.
可利用操作系统的计划任务功能在指定时间运行批处理文件或脚本.
恢复速度情景:由于电源故障,你放置在达拉斯地区办事处的数据库服务器崩溃.
服务器重启时,数据库必须自动并快速恢复至正常状态.
MySQL的重启恢复时间取决于事务日志的大小,而且必须对该日志进行处理以回滚处于活动状态的事务.
这可能会花费几分钟或更长时间,具体时间取决于数据库管理员如何配置服务器.
InterBase的重启恢复是瞬时的,因为无需对该数据库进行修改即可回滚激活的事务.
此外,InterBase仅改变每个回滚激活事务的状态位,并在数据库中保留回滚事务创建的版本记录.
版本控制引擎可自动忽略这些版本记录,垃圾收集器可在正常使用数据库并访问这些记录时自动移除这些记录.
物有所值的数据类型情景:你的应用程序需要跟踪一个大型的投资组合,而且必须执行财务计算并汇总以"元"为单位的字段.
MySQL没有提供一种支持精确财务计算的数据类型.
虽然MySQL具有能够将数值保存为字符串的DECIMAL数据类型,但是所有计算均是通过将保存的数值转换为双精度浮点数来执行的.
由于浮点数无法精确表示大多数十进制分数,因此,你在执行大量数值求和等计算时可能发生错误.
唯一的替代方法是将所有金额以"分"的形式保存在整数字段中,并在显示金额时在客户端应用程序中将其转换回"元"的形式.
InterBase同时支持NUMERIC和DECIMAL数据类型,能够对实数进行精确计算.
2MySql5.
5参考手册第6章.
3MySql5.
5参考手册第10章.
数据域情景:贵公司决定改用一套新型行业标准零件编号系统,贵公司的大多数客户都在采用该系统.
新的零件编号比当前使用的编号更大.
整个数据库的多份表格中均包含零件编号字段.
使用MySQL时,你必须修改每份表格中的零件编号字段.
技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-7-InterBase则支持数据域.
一个数据域是一个自定义数据类型,你可以根据InterBase支持的其中一种本地数据类型对其进行定义.
对于原零件编号字段,你可能使用以下语句:CREATEDOMAINPART_NO_TYPEVARCHAR(10)NOTNULL;在数据库中添加数据域后,你便可以在每份表格中将其用作零件编号数据类型.
假设新的零件编号长达14个字符.
你需要做的就是执行以下语句:ALTERDOMAINPART_NO_TYPETYPEVARCHAR(14)任务即告完成.
角色情景:你正在进行一个多模块应用程序的第一阶段部署工作,该程序将支持200名并发用户.
你可以根据用户的数据访问权限将其分为三个组.
在部署项目的下一阶段时,这些权限会随着数据库表格的增加而变化.
MySQL支持用户级访问控制.
如果你需要改变访问权限,你必须针对每名用户进行变更.
InterBase支持角色.
借助InterBase,你可以创建三个角色并为每个角色授予必要的权限.
之后,为每名用户授予适当的角色.
若要改变一个组中所有用户的权限,仅需改变相应角色的权限即可.
字符串情景:你需要在表中添加一个字符串字段以保存一些描述性文本.
用户预计文本长度不会超过一或两行,因此你将该字段定义为VARCHAR(150).
后来,变更的需求规定该字段必须扩展为500个字符.
MySQL拥有六种字符串字段类型:CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT.
CHAR和VARCHAR类型的最大长度为255字节.
其余四种文本类型的最大长度从255字节至4吉字节不等.
可以对CHAR和VARCHAR字段进行检索,但不能对其余四种文本字段类型进行检索.
使用MySQL时的最佳解决方案是能够保存多达64千字节的TEXT类型.
更令人费解的是,MySQL有时会改变数据类型4.
例如,同一表格中的VARCHAR字段和CHAR字段的长度均不能超过三.
如果你尝试,MySQL会将CHAR转换为VARCHAR.
当同一表格中包含长度超过三的CHAR字段和一个文本字段时,也会出现同样的情况.
例外情况是:长度小于四的CHAR列不会变为VARCHAR.
事实上,长度小于四的VARCHAR列会变为CHAR.
使用InterBase时,你的选择更加灵活.
InterBase仅提供三种类型:CHAR、VARCHAR和textblob,而且你定义的类型不会改变.
CHAR和VARCHAR能够容纳最长32千字节的数据,CHAR数据类型可准确保留行尾空格.
默认值情景:你需要在创建表格中的每项记录时记录日期和时间.
虽然MySQL允许你为一列定义一个默认值,但该默认值仅限于字面值.
由于无法调出函数,因此无法使DATETIME列中的默认值成为当前的日期和时间.
5MySQL不支持触发器,因此你必须在客户端应用程序中分配当前的日期和时间.
MySQL还有一个名为TIMESTAMP的字段类型,用以保存日期和时间.
如果不为表格中的第一个TIMESTAMP列定义默认值,默认值将为当前的日期和时间.
但是,TIMESTAMP技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-8-类型的范围有限,止于2038年.
6MySQL5.
5不再支持低于MySQL4.
1的TIMESTAMP格式.
这可能意味着为较低版MySQL编写的应用程序可能需要经过修改才能正确兼容MySQL5.
5,从而增加不必要的应用程序开发成本.
除了字面值,InterBase允许你将当前的日期和时间定义为任意TIMESTAMP列的默认值.
你还能够将当前的用户名定义为VARCHAR或CHAR列的默认值.
4MySQL5.
5参考手册第10.
1.
3节5MySQL5.
5参考手册第10.
1.
4节6MySQL5.
5参考手册第10.
1.
2节技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-9-检查约束情景:你想在数据库中集中管理业务规则,以确保所有应用程序能够一致地执行这些规则并简化维护流程.
除了不支持触发器以外,MySQL也不支持检查约束.
7你能够在MySQL中定义的唯一列约束为NOTNULL,因此你必须在客户端应用程序中进行所有数据验证.
为了简化数据验证,InterBase同时支持触发器和检查约束.
通过将检查约束融入列定义,你可以确定列值是否介于两个值之间,是否近似于一个数值,是否属于一列数值,是否包含一个数值,或是否起始于一个数值.
你还能够使用AND和OR将多种情况组合起来.
InterBase使执行数据库中的业务规则变得极其轻松.
监控情景:用户不定期地抱怨系统性能低下.
你怀疑一名用户的行为引起非常耗时的CPU密集型计算.
你必须确定引起该问题的用户和SQL语句.
MySQL仅提供了非常有限的监控工具.
无法查看与连接有关的事务或事务相应的语句.
你无法查看起始时间、插入、更新、删除操作的总数、来自缓存或磁盘的读取操作数量,或其它重要的连接级、事务级或语句级统计信息.
InterBase提供了一套完备的性能监控表.
你能够使用IBConsole中的交互式性能监控器查看这些信息,或制定你自己的查询,以便仅获取所需信息.
性能监控表可提供与连接、事务、各条语句、打开的表格和存储过程有关的详细信息.
可用的信息包括起始时间和CPU时间,选择、插入、更新和删除的所有行,以及从磁盘读取、写入磁盘、从缓存提取的页数.
通过这些表格,你能够轻松确定使用最多CPU周期的语句,以及正在执行该语句的连接的IP地址.
你还可以查看正在执行的SQL语句.
你可以立即获得所需的所有容量规划和系统分析信息.
配置情景:你的应用程序将部署在用户数和数据量大幅变动的站点.
你需要一种不必根据变化的负载对其进行调整,并且不需要专业数据库管理员(DBA)对其进行初始配置设置的数据库.
7MySQL5.
5参考手册附录C和第C.
6.
3.
4节MySQL包含300多个系统变量以及大量的配置参数,用以控制运行的各个环节.
例如,MySQL具有查询缓存、键缓冲器(索引缓存)、表缓存、InnoDB缓冲器和InnoDBLog缓冲器.
你必须决定如何为这些缓存分配内存,以获得最佳性能.
虽然这似乎提供了更高的灵活性,但可怕的是,在为数百名最终客户部署应用程序时,需要为任意数量的配置设置系统变量,因而可能对应用程序的性能造成负面影响.
InterBase可进行全面的自我调节.
InterBase采用单一、统一的缓存,并且能够根据正在执行的混合语句,为数据页、索引页、查询缓存、排序和其它用途动态分配缓存空间.
虽然InterBase配置文件包含31项设置,但在任何或最不常见的情况下,你可能仅需改变其中三项.
其中一项是"缓存大小",另两项是"CPU亲和性"以及是否启用超线程支持.
"CPU亲和性"支持你规定InterBase使用多处理器电脑上的哪些处理器,而"超线程"可启用InterBase的超线程处理器支持.
技术白皮书InterBase与MySQL:技术对比英巴卡迪诺科技公司-10-复制情景:贵公司的总部设在达拉斯.
贵公司还在休斯顿、奥斯丁和埃尔帕索设有销售办事处.
内部销售代表在总部办事处录入订单,驻地销售代表在各个驻地办事处录入订单.
在驻地办事处录入的所有订单都必须复制到总部数据库中,而在总部录入的所有订单都必须复制到驻地办事处的数据库中.
MySQL支持异步单向复制.
你必须将一个数据库指定为主数据库,而将所有其它数据库指定为从数据库.
数据仅可从主数据库复制到从数据库中.
借助InterBase的多向复制特性,你能够将订单从总部复制到特定的驻地办事处,或从驻地办事处复制到总部.
特性对比下表对比了InterBase和MySQL的各项特性.
该列表并不详尽,而是重点专注对于部署到远程站点的嵌入应用以及同时包含了更新和长时间读取操作的混合型应用来说非常重要的特性.
关于HostDare服务商在之前的文章中有介绍过几次,算是比较老牌的服务商,但是商家背景财力不是特别雄厚,算是比较小众的个人服务商。目前主流提供CKVM和QKVM套餐。前者是电信CN2 GIA,不过库存储备也不是很足,这不九月份发布新的补货库存活动,有提供九折优惠CN2 GIA,以及六五折优惠QKVM普通线路方案。这次活动截止到9月30日,不清楚商家这次库存补货多少。比如 QKVM基础的五个方案都...
麻花云在7月特意为主机测评用户群定制了促销活动:香港宽频CN2云服务器、安徽移动云服务器(BGP网络,非单线,效果更好)、安徽移动独立服务器、安徽电信独立服务器,全部不限制流量,自带一个IPv4,默认5Gbps的DDoS防御。活动链接:https://www.mhyun.net/act/zjcp特价云服务器不限流量,自带一个IPv4,5Gbps防御香港宽频CN2全固态Ⅲ型 4核4G【KVM】内存:...
快快CDN主营业务为海外服务器无须备案,高防CDN,防劫持CDN,香港服务器,美国服务器,加速CDN,是一家综合性的主机服务商。美国高防服务器,1800DDOS防御,单机1800G DDOS防御,大陆直链 cn2线路,线路友好。快快CDN全球安全防护平台是一款集 DDOS 清洗、CC 指纹识别、WAF 防护为一体的外加全球加速的超强安全加速网络,为您的各类型业务保驾护航加速前进!价格都非常给力,需...