一、MySQL

      MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

mysql 有没有hash join mysql 有没有类似oracle的suspend_SQL


1、优点

(1)体积小、速度快、总体拥有成本低,开源。
(2)支持多种操作系统。
(3)是开源数据库,提供的接口支持多种语言连接操作 。
(4)MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不是过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPU。
(5)MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证。
(6)支持大型的数据库, 可以方便地支持上千万条记录的数据库。即32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改。
(7)拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。
(8)MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上。

2、缺点

(1)不支持热备份;
(2)MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变。
(3)没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制。
(4)MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或linux 自行安装 免费 、Unix或Linux 第三方安装 收费。

3、基本语法

增:insert into 目标数据表 select * from 源数据表" (把源数据表的记录添加到目标数据表)
删:delete from 数据表 where 条件表达式
改:update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式
查:select * from 数据表 where 字段名=字段值 order by 字段名 [desc]

二、SQL Server

       SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。

mysql 有没有hash join mysql 有没有类似oracle的suspend_mysql 有没有hash join_02


1、优点

(1)易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等。
(2) 扩展性强:当系统要更高数据库处理速度时,只要简单地增加数据库服务器就 可以得到扩展。
(3)可维护性:当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持续工作。
(4) 安全性:因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。
(5)易用性:对应用来说完全透明,集群暴露出来的就是一个IP。
(6)为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。

2、缺点:

(1)开放性 :SQL Server 只能windows上运行没有丝毫开放性操作系统系统稳定对数据库十分重要Windows9X系列产品偏重于桌面应用NT server只适合小型企业而且windows平台靠性安全性和伸缩性非常有限象unix样久经考验尤其处理大数据库。
(2)伸缩性并行性 :SQL server 并行实施和共存模型并成熟难处理日益增多用户数和数据卷伸缩性有限。
(3)安全性:没有获得任何安全证书。
(4)性能 :SQL Server 多用户时性能佳 。
(5)客户端支持及应用模式: 客户端支持及应用模式。只支持C/S模式,SQL Server C/S结构只支持windows客户用ADO、DAO、OLEDB、ODBC连接。
(6)使用风险:SQL server 完全重写代码经历了长期测试断延迟许多功能需要时间来证明并十分兼容。

三、Oracle

体系结构

(1)指数据库的组成,工作过程与原理,以及数据在数据库中的组织与管理机制

(2)服务器结构:由Oracle 数据库和Oracle 实例组成

(3)数据库的结构:包括逻辑结构和物理结构

(4)数据库的操作系统文件,即实力物理存储区

mysql 有没有hash join mysql 有没有类似oracle的suspend_SQL_03


1、优点

(1)开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持。
(2)可伸缩性,并行性:oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度。
(3)安全性:获得最高认证级别的ISO标准认证。
(4)性能:Oracle 性能高 保持开放平台下TPC-D和TPC-C世界记录。
(5)客户端支持及应用模式:Oracle 多层次网络计算支持多种工业标准用ODBC、JDBC、OCI等网络客户连接 。
(6)使用风险:Oracle 长时间开发经验完全向下兼容得广泛应用地风险低。

2、缺点

(1)对硬件的要求很高。
(2)价格比较昂贵。
(3)管理维护麻烦一些。
(4)操作比较复杂,需要技术含量较高。

四、三者之间的区别

1、MySQL与SQL Server之间的区别
(1)MySQL是免费开源;MySQL跨平台,Windows和Linux都有对应的版本。
SQL Server是收费的;SQL Server只能在Windows平台上使用。
(2)性能和安全方面,MySQL比SQL Server复杂,MySQL的管理都是文字命令界面,要借助工具才能图形管理,SQL Server相对简单点,本身就是图形界面容易入手。

2、MySQL与Oracle之间的区别
(1)对事务的提交
MySQL默认是自动提交,而Oracle默认不自动提交,需要用户手动提交,需要在写commit;指令或者点击commit按钮。
(2)分页查询
MySQL是直接在SQL语句中写"select… from …where…limit x, y",有limit就可以实现分页;而Oracle则是需要用到伪列ROWNUM和嵌套查询。
(3) 事务隔离级别
MySQL是read commited的隔离级别,而Oracle是repeatable read的隔离级别,同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的读一致性。
每个session提交后其他session才能看到提交的更改。
Oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,Oracle会在undo表空间中为这个session构造它查询时的旧的数据块。
MySQL没有类似Oracle的构造多版本数据块的机制,只支持read commited的隔离级别。
一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。
(4)对事务的支持
MySQL在innodb存储引擎的行级锁的情况下才可支持事务,而Oracle则完全支持事务。
(5)保存数据的持久性
MySQL是在数据库更新或者重启,则会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,可以随时恢复。
(6)并发性
MySQL以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。
Oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以Oracle对并发性的支持要好很多。
(7)逻辑备份
MySQL逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,Oracle逻辑备份时不锁定数据,且备份的数据是一致。
(8)复制
MySQL:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。
Oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。
(9)性能诊断
MySQL的诊断调优方法较少,主要有慢查询日志。
Oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等。
(10)权限与安全
MySQL的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
Oracle的权限与安全概念比较传统,中规中矩。
(11)分区表和分区索引
MySQL的分区表还不太成熟稳定。
Oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
(12)管理工具
MySQL管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。
Oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
(13)最重要的区别
MySQL是轻量型数据库,并且免费,没有服务恢复数据。
Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。

3、Oracle与SQL Server之间的区别
(1)操作的平台不同
Oracle可在所有主流平台上运行,Oracle数据库采用开放的策略目标,它使得客户可以选择一种最适合他们特定需要的解决方案。客户可以利用很多种第三方应用程序、工具。
SQL Sever在Window平台上的表现,和Windows操作系统的整体结合程度,使用方便性。
(2)安全性
Oracle的安全认证获得最高认证级别的ISO标准认证,而SQL Server并没有获得什么安全认证。这方面证明了Oracle的安全性是高于SQL Server的。
(3)性能不同
SQL Server 多用户时性能不佳
Oracle 性能最高, 保持windowsNT下的TPC-D和TPC-C的世界记录。
(4)开放性
SQL Server 只能在windows 上运行,没有丝毫的开放性,操作系统的系统稳定对数据库是十分重要的。
Oracle 能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。
(5)客户端支持及应用模式
SQL Server C/S结构,只支持windows客户,可以用ADO,DAO,OLEDB ,ODBC连接。
Oracle 多层次网络计算,支持多种工业标准,可以用ODBC, JDBC,OCI等网络客户连接。
(6)分区表
SQLSERVER不能。
ORACLE能根据INDEX的值的范围,把数据存放到不同的硬盘空间。
(7)文件结构不同
oracle的文件体系结构为:
数据文件 .dbf(真实数据)
日志文件 .rdo
控制文件 .ctl
参数文件 .ora

sql server的文件体系结构为:
.mdf (数据字典)
.ndf (数据文件)
.ldf (日志文件)