mysql开源免费的,而oracle则是收费的,并且价格非常高。
2、管理工具上
mysql的管理工具较少,在Linux下的管理工具的安装有时须要安装额外的包(phpmyadmin,etc),有一定繁芜性。
oracle有多重成熟命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。oracle支持大并发,大访问量,是OLTP最好的工具。
3、数据库的层次构造上
mysql:默认用户是root,用户下可以创建好多数据库,每个数据库下还有好多表,一样平常情形下都是利用默认用户,不会创建多个用户;
oracle:创建一个数据库,数据库下有好多用户:sys、system、scott等,不同用户下有好多表,一样平常情形下只创建一个数据库用。4、数据库中表字段类型:
mysql:int、float、double等数值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。
oracle:number(数值型),varchar2、varchar、char(字符型),date(日期型)等…
5、主键
mysql一样平常利用自动增长类型,在创建表时只要指定表的主键auto increment,插入记录时,不须要再指定该记录的主键值,mysql将自动增长。
oracle没有自动增长类型,主键一样平常利用的序列,插入记录时将序列号的下一个值赋给该字段即可,只是ORM框架是只假如native主键天生策略即可。
6、单引号处理
mysql里可以用双引号包起字符串,oracle只可以用单引号包起字符串。
7、查询办法
mysql是直接在SQL语句中利用limit就可以实现分页
oracle则是须要用到伪劣ROWNUM和嵌套查询
8、对事务提交
mysql默认是自动提交,可以修正为手动提交
oracle默认不自动提交,须要手动提交,须要在写commit指令或点击commit按钮。9、对事务的支持
mysql在innodb存储引擎的夯机所的情形下才支持事务
oracle则完备支持事务。
10、事务隔离级别:
mysql是read commited的隔离级别
而oracle是repeatable read的隔离级别
同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的读同等性。每个session提交后其它session才能看到提交的变动;
11、并发性:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁韶光过长,会让其他session无法更新此表中的数据。
oracle利用行级锁,对资源锁定的粒度要小很多,只是锁定sql须要的资源,并且加锁是在数据库中的数据行上,不依赖于索引,以是oracle对并发性的支持要好很多。
12、逻辑备份
mysql逻辑备份时要锁天命据,才能担保备份的数据是同等的,影响业务正常的dml利用
oracle逻辑备份时不锁天命据,且备份的数据是同等的。
13、复制
mysql:复制服务器配置很大略,但主库出问题时,从库可能丢失一定的数据,且须要手工切换从库到主库;
oracle:既有堆或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出问题时,可以自动切换备库到主库,但配置管理较繁芜。
14、性能诊断
mysql的诊断调优方法较少,紧张有慢查询日志;
oracle有各种成熟的性能诊断调优工具,能实现很多自动剖析、诊断功能。比如awr、addm、sqltrace、tkproof等。
15、日期转换
mysql中日期转换用dateformat()函数;
oracle用to_date()与to_char()两个函数。