与oracle相比,mysql有什么优势_sql数据库和oracle数据库

与oracle相比,mysql有什么优势_sql数据库和oracle数据库Oracle与MySQl对比,并发性并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。mysql:以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracle:使用行…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Oracle与MySQl对比,

并发性

并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。

mysql:以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。

虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。

oracle:使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。所以oracle对并发性的支持要好很多。

一致性

oracle:支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。

mysql:没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。

session更新数据时,要加上排它锁,其他session无法访问数据。

事务

oracle:很早就完全支持事务。

mysql:在innodb存储引擎的行级锁的情况下才支持事务。

数据持久性

oracle:保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。

mysql:默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。

提交方式

oracle:默认不自动提交,需要用户手动提交。

mysql:默认是自动提交。

逻辑备份

oracle:逻辑备份时不锁定数据,且备份的数据是一致的。

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

热备份

oracle:有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。

mysql:

myisam的引擎,用mysql自带的mysqlhostcopy热备时,需要给表加读锁,影响dml操作。

innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。

innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。

sql语句的扩展和灵活性

mysql:对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。

oracle:在这方面感觉更加稳重传统一些。

复制

oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。

mysql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。

性能诊断

oracle:有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等

mysql:的诊断调优方法较少,主要有慢查询日志。

权限与安全

mysql:的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。

oracle:的权限与安全概念比较传统,中规中矩。

分区表和分区索引

oracle:的分区表和分区索引功能很成熟,可以提高用户访问db的体验。

mysql:的分区表还不太成熟稳定。

语法区别:

http://www.htsjk.com/teradata/33824.html

www.htsjk.Com

true

http://www.htsjk.com/teradata/33824.html

NewsArticle

Oracle与MySQl对比, 并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql:以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过…

本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.

同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。

相关文章

暂无相关文章

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193997.html原文链接:https://javaforall.net

(0)
上一篇 2025年11月14日 下午3:22
下一篇 2025年11月14日 下午4:01


相关推荐

  • RabbitMQ之死信队列

    RabbitMQ之死信队列DLX Dead Letter Exchange 利用 DLX 当消息在一个队列中变成死信 deadmessage 之后 它能被重新 publish 到另一个 Exchange 这个 Exchange 就是 DLX 消息变成死信一向有一下几种情况 消息被拒绝 basic reject basic nack 并且 requeue false 消息 TTL 过期 参考 RabbitMQ 之 TTL Time T

    2026年3月17日
    2
  • 动漫常用网站/APP 彻底帮你解决看动漫的烦恼[通俗易懂]

    动漫常用网站/APP 彻底帮你解决看动漫的烦恼[通俗易懂]本文是众多使用技巧中其中的一篇,全部使用技巧点击链接查看,保证你收获满满我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题,有兴趣的可以去我的主页了解更多计算机学科的精品思维导图整理本文可以转载,但请注明来处,觉得整理的不错的小伙伴可以点赞关注支持一下哦!本文提到的所有软件和工具,可关注公众号一起学计算机点击资源获取获得本人最常用的网站就是AGE动漫,这是我用过最好的动漫网站,资源算是最全的吧,并且大多数动漫都提供百度云链接,可下载观看,…

    2022年8月23日
    7
  • char与byte的区别

    char与byte的区别很多初学者 包括我 已经学了一年多 java 了 肯会对 char 和 byte 这两种数据类型有所疑惑 相互混淆 今天特地查了好多资料 对 byte 和 char 两种数据类型进行了总结和比较 先将结果与大家分享 nbsp nbsp nbsp nbsp byte nbsp 是字节数据类型 nbsp 是有符号型的 占 1 nbsp 个字节 大小范围为 128 127 char nbsp 是字符数据类型 nbsp 是无符号型的 占 2 字节 Unicode 码 nbsp 大小范围 nbsp 是 0 65

    2025年7月5日
    5
  • 如何在阿里云申请免费的HTTPS证书

    如何在阿里云申请免费的HTTPS证书本文分享 如何在阿里云申请免费的 HTTPS 证书

    2026年3月18日
    2
  • Git入门级常用命令(1)

    Git入门级常用命令(1)

    2021年5月23日
    138
  • 哪些线程是安全的_redis是线程安全的吗

    哪些线程是安全的_redis是线程安全的吗Java中平时用的最多的map就是hashmap但是它却是线程不安全的。那除了hashmap还有哪些常见的线程安全的map?1.hashtableMap<String,Object>hashtable=newHashtable<String,Object>();这是所有人最先想到的,那为什么她是线程安全的?那就看看她的源码,我们可以看出我们常用的put,get,…

    2022年4月20日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号