浅谈MySQL和Oracle的区别

一、宏观上的区别

1、mysql与oracle都是关系型数据库,应用于各种平台。mysql最开始是一个瑞典公司开发的,但后来被sun公司收购,后来sun又被oracle收购,所以现在可以说mysql属于甲骨文公司了,mysql开源免费的,而oracle则是收费的,并且价格非常高。mysql属于轻量型数据库;oracle属于重量型数据库。

2、mysql默认端口:3306,默认用户:root;oracle默认端口:1521,默认用户:system
mysql的安装卸载很简单,oracle相对来说会麻烦一点,安装所用的空间差别也是很大的,mysql安装后差不多一两百兆,而oracle则有3G左右,且使用的时候oracle占用特别大的内存空间和其他机器性能。

3、mysql登录:mysql -hlocalhost -uroot -p密码(h:host、u:user、p:password)
oracle登录:sqlplus user_name/password@IP:port/instance_name;(其中可以把IP地址,端口号,实例名写在一个TNS文件中取一个别名,登陆的时候输入这个别名就行了)
初学阶段,图形化工具,mysql可以使用Navicat,Oracle一般用PLSQL,也可以用sqlyog等;

4、mysql的管理工具较少,在Linux下的管理工具的安装有时需要安装额外的包(phpmyadmin,etc),有一定复杂性。
oracle有多重成熟命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
oracle支持大并发,大访问量,是OLTP最好的工具。

5、mysql:默认用户是root,用户下可以创建好多数据库,每个数据库下还有好多表,一般情况下都是使用默认用户,不会创建多个用户;
oracle:创建一个数据库,数据库下有好多用户:sys、system、scott等,不同用户下有好多表,一般情况下只创建一个数据库用。

二、操作区别

1、数据库中表字段类型:
mysql:int、float、double等数值型,varchar、char字符型,date、datetime、time、year、timestamp等日期型。
oracle:number(数值型),varchar2、varchar、char(字符型),date(日期型)等…
其中char(2)这样定义,这个单位在oracle中2代表两个字节,mysql中代表两个字符。
其中varchar在mysql中,必须给长度例如varchar(10)不然插入的时候出错。

2、主键:
mysql一般使用自动增长类型,在创建表时只要指定表的主键auto increment,插入记录时,不需要再指定该记录的主键值,mysql将自动增长。
oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值赋给该字段即可,只是ORM框架是只要是native主键生成策略即可。

3、单引号处理:mysql里可以用双引号包起字符串,oracle只可以用单引号包起字符串。

4、分页处理:
mysql是直接在SQL语句中使用limit就可以实现分页
oracle则是需要用到伪劣ROWNUM和嵌套查询

5、对事务提交:
mysql默认是自动提交,可以修改为手动提交
oracle默认不自动提交,需要手动提交,需要在写commit指令或点击commit按钮。

6、对事务的支持:mysql在innodb存储引擎的夯机所的情况下才支持事务,而oracle则完全支持事务。

7、事务隔离级别:
mysql是repeatable read的隔离级别,而oracle是read commited的隔离级别;
同时二者都支持serializable串行化事务隔离级别,可以实现最高级别的读一致性。每个session提交后其它session才能看到提交的更改;
oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo空间中为这个session构造它查询时的旧的数据块;
mysql没有类似oracle的构造多版本数据的机制,只支持read commited的隔离级别,一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据;session更新数据时,要加上排它锁,其他session无法访问数据。

8、并发性:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然Innodb引擎表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁;
oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖于索引,所以oracle对并发性的支持要好很多。

9、逻辑备份:
mysql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用,oracle逻辑备份时不锁定数据,且备份的数据是一致的。

10、复制:
mysql:复制服务器配置很简单,但主库出问题时,从库可能丢失一定的数据,且需要手工切换从库到主库;
oracle:既有堆或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出问题时,可以自动切换备库到主库,但配置管理较复杂。

11、性能诊断:
mysql的诊断调优方法较少,主要有慢查询日志;
oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等。

12、保存数据的持久性:
mysql默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据;
oracle把提交的sql操作先写入了在线联机日志文件中,保持到了硬盘上,可以随时恢复。

13、热备份:
oracle有成熟的热备份工具rman,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。
mysql:
myisam引擎:用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作;
innodb引擎:它会备份innodb的表和索引,但是不会备份.frm文件,用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其它用户使用数据库,但此工具是收费的。
innobackup是结合ibbackup使用的一个脚本,它会协助对.frm文件的备份。

14、日期转换:
mysql中日期转换用dateformat()函数;
oracle用to_date()与to_char()两个函数。

MySQL数据库是一种关系型数据库管理系统,是开源软件,免费使用。MySQL原本是瑞典MySQL AB公司开发的,现在属于Oracle公司旗下的产品之一。MySQL自问世以来,由于其高效、灵活、稳定等特点,成为了Web应用开发中最受欢迎的数据库之一。MySQL广泛应用在各种领域,如电子商务、社交网络、在线游戏、金融、医疗、物流等。 MySQL在系统设计中的应用非常广泛,下面我们就来浅谈一下MySQL在系统设计中的应用。 一、数据存储 MySQL数据库的最基本的应用就是用于数据存储。MySQL可以存储大量的数据,并且支持多种数据类型索引,可以方便地进行数据的查询管理。在Web应用开发中,我们通常会使用MySQL来存储用户信息、商品信息、订单信息、评论信息等数据。MySQL可以通过SQL语言进行数据的增删改查操作,操作简单、灵活,适用于各种规模的应用。 二、数据分析 MySQL可以通过SQL语言进行数据分析,支持各种聚合函数数据处理函数,可以方便地进行各种数据分析计算。在Web应用开发中,我们通常会使用MySQL来进行数据分析,如统计用户数量、商品销量、订单金额等信息。MySQL还支持多表连接查询,可以方便地进行数据的关联查询处理。 三、数据备份恢复 MySQL可以进行数据备份恢复,可以保证数据的安全性可靠性。在Web应用开发中,数据备份恢复是非常重要的工作,可以保证数据不会因为硬件故障、软件故障等原因而丢失。MySQL可以通过备份工具进行数据备份,也可以通过SQL语句进行数据备份。在数据恢复时,只需要将备份数据还原到数据库即可。 四、数据库集群 MySQL可以通过主从复制、多主复制等方式进行数据库集群,可以提高数据的可用性性能。在Web应用开发中,数据集群是提高系统可用性性能的重要手段。通过数据库集群,我们可以将数据分散到多台服务器上,可以提高数据的读写性能,也可以提高系统的可用性。MySQL的主从复制多主复制是比较成熟稳定的数据库集群方案,可以满足各种规模的需求。 五、数据库缓存 MySQL可以通过缓存机制提高数据的访问速度,可以减轻数据库的负载压力。在Web应用开发中,数据库负载是一个非常严重的问题,在高并发的情况下,数据库往往成为系统的瓶颈。通过使用数据库缓存,我们可以将一部分数据缓存到内存中,可以提高数据的访问速度,也可以减轻数据库的负载压力。MySQL可以通过多种缓存机制实现缓存,如使用Memcached、Redis等缓存软件,也可以使用MySQL自带的缓存机制。 总之,MySQL在系统设计中的应用非常广泛,可以提供高效、可靠安全的数据管理处理服务。MySQL是一种功能丰富、灵活、易用的关系型数据库管理系统,适用于各种规模的Web应用开发。在使用MySQL时,我们需要根据实际需要业务场景进行选择配置,才能发挥其最大的价值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值