MySQL
不支持事务处理、没有视图、储存过程和触发器(trigger),没有数据库端的用户自定义函数,不能使用标准SQL语法。
SQL Server
它已广泛应用于金融、保险、电力、行政管理等与数据库有关的行业。由于其易操作性及友好的界面。它一般是和同是微软产品的.net平台一起搭配使用。
Oracle
能在所有主流平台(VMS、DOS、UNIX、WINDOWS)上运行,提供高可用性和高伸缩性的簇的解决方案,扩展Windows NT的能力。Oracle良好的兼容性、可移植性、可连接性和高生产率是 Oracle RDBMS具有良好的开放性。Oracle价格是比较昂贵的。OLTP(On-Line Transaction Processing联机事务处理系统)的最好工具。
Oracle:客户端和命令窗口,都是由用户决定内容-> conn user_name/password;
MySQL:客户端和命令窗口,都是由数据库决定内容-> use datebase;
Oracle | SQL Server | MySQL | |
一库多用户 | 中小企业 | 多库多用户 | |
大型数据库(大并发,大访问量) | 高度集成化,中小型数据库 | 中小型数据库 | |
收费 | 收费高 | 收费 | 开源 |
字符串拼接 | || | + | concat() |
空值处理数 | Nvl() | isnull() | ifnull() |
获取系统时间 | sysdate | getdate() | now() |
日期格式化 | to_char(sysdate,'yyyymmdd') | convert(varchar(8),getdate(),112) | date_format(xcs_received_date,'%Y%m%d') |
主键自增长 | 使用序列自动增长 | create table tb(id int identity(1,1) primary key ) | create table tb(id int auto increment primary key ) |
大型数据库的特点
海量数据、高吞吐量;复杂逻辑、高计算量,以及高可用性
lamp(Web应用软件组合)
Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
用轻量级的Web 服务器(例如nginx,HTTP和反向代理服务器)高效,对于静态文件的响应能力远高于Apache服务器
- Oracle: 数据文件包括:控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件。这是根据文件功能行进行划分,并且所有文件都是二进制编码后的文件,对数据库算法效率有极大的提高。由于Oracle文件管理的统一性,就可以对SQL执行过程中的解析和优化,指定统一的标准:
RBO(基于规则的优化器)、CBO(基于成本的优化器)
通过优化器的选择,以及无敌的HINT规则,给与了SQL优化极大的自由,对CPU、内存、IO资源进行方方面面的优化。 - MySQL:最大的一个特色,就是自由选择存储引擎。每个表都是一个文件,都可以选择合适的存储引擎。常见的引擎有 InnoDB、 MyISAM、 NDBCluster等。但由于这种开放插件式的存储引擎,比如要求数据库与引擎之间的松耦合关系。从而导致文件的一致性大大降低。在SQL执行优化方面,也就有着一些不可避免的瓶颈。在多表关联、子查询优化、统计函数等方面是软肋,而且只支持极简单的HINT。
- SQL Server :数据架构基本是纵向划分,分为:Protocol Layer(协议层), Relational Engine(关系引擎), Storage Engine(存储引擎), SQLOS。SQL执行过程就是逐层解析的过程,其中Relational Engine中的优化器,是基于成本的(CBO),其工作过程跟Oracle是非常相似的。在成本之上也是支持很丰富的HINT,包括:连接提示、查询提示、表提示。