mysql 与 Oracle 的区别,oracle 与 mysql分页查询的区别

文章目录

  • mysql 与 Oracle 的区别
      • 1、并发性
      • 2、一致性
      • 3、事务
      • 4、数据持久性
      • 5、提交方式
      • 6、逻辑备份
      • 7、热备份
      • 8、sql语句的扩展和灵活性
      • 9、复制
      • 10、性能诊断
      • 11、权限与安全
      • 12、分区表和分区索引
      • 13、管理工具
  • oracle 与 mysql分页查询
      • 1.Oracle分页查询中提供了一个伪列:ROWNUM
      • 3.如果做手动分页查询,可用下面的方法

mysql 与 Oracle 的区别

1、并发性

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

mysql:
mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。
虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。

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

2、一致性

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

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

3、事务

oracle很早就完全支持事务。

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

4、数据持久性

oracle
保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,
如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。
mysql:
默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。

5、提交方式

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

6、逻辑备份

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

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

7、热备份

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

8、sql语句的扩展和灵活性

mysql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。
oracle在这方面感觉更加稳重传统一些。

9、复制

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

10、性能诊断

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

11、权限与安全

mysql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。
oracle的权限与安全概念比较传统,中规中矩。

12、分区表和分区索引

oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。
mysql的分区表还不太成熟稳定。

13、管理工具

oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。
mysql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。

oracle 与 mysql分页查询

分页查询:就是将数据分段查询出来,一次只查询数据的一部分这样做可以减少系统资源开销,减少数据量,可以提高网络传输速度分页在不同的数据库中的SQL语句是不同的

1.Oracle分页查询中提供了一个伪列:ROWNUM

ROWNUM字段不存在于任何一张表中,但是每张表都可以查询该字段。该字段的值是结果集中每条记录的行号ROWNUM字段的值是动态生成的,伴随查询过程。只要可以查询出一条记录,ROWNUM就会为该条记录生成行号,从1开始每次递增1。

由于ROWNUM是在查询表的过程中进行编号的,所以在使用ROWNUM对结果集编行号的查询过程中不要使用ROWNUM做大于1以上数字的判断,否则结果集没有任何数据

如:select * from table_A where rownum > 1是查不到任何数据的,同样,下面的语句也是查不到任何数据的

SELECT * 
FROM(SELECT ROWNUM rn,p.*FROM table_A p
)
WHERE rn BETWEEN 6 AND 10 

如果想查出来表中6到10之间的数据,可以先把伪列查出来当做表中的一个字段,然后对该字段做where条件查询

select * from
(select * from
(select rownum rn,p.* from table_A p)
where rownum <= 10)
where rn > 6

    ### 2.mysql中的分页查询则比较简单,只需要用limit关键词就可以

​ 如:

select * from table_A limint 6,10

3.如果做手动分页查询,可用下面的方法

​ start:(page-1)*rows+1

​ end:page*rows

page:页数 rows:每页显示的记录数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/160698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode算法题解(动态规划)|LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树

一、LeetCode343. 整数拆分 题目链接&#xff1a;343. 整数拆分 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入…

​极氪,中国传统汽车品牌电动化的样板间

这篇文章早就想写了&#xff0c;因为太忙的原因就一直跳票&#xff0c;正好最近两件事的出现&#xff0c;又触发了想写这篇文章的冲动。 两件事主要是&#xff1a; 一&#xff0c;10 月份各家陆续公布了单月销量以及累计销量&#xff1b; 二&#xff0c;极氪在北京正式发布了 …

LeetCode100131. Make Three Strings Equal

文章目录 一、题目二、题解 一、题目 You are given three strings s1, s2, and s3. You have to perform the following operation on these three strings as many times as you want. In one operation you can choose one of these three strings such that its length i…

PTA 7-2 简单计算器

7-2 简单计算器 分数 20 全屏浏览题目 作者 张彤彧 单位 浙江大学 模拟简单运算器的工作。假设计算器只能进行加减乘除运算&#xff0c;运算数和结果都是整数&#xff0c;四种运算符的优先级相同&#xff0c;按从左到右的顺序计算。 输入格式: 输入在一行中给出一个四则运…

【GUI】-- 10 贪吃蛇小游戏之静态面板绘制

GUI编程 04 贪吃蛇小游戏 4.1 第一步&#xff1a;先绘制一个静态的面板 首先&#xff0c;需要新建两个类&#xff0c;一个StartGame类作为游戏的主启动类&#xff1b;一个GamePanel类作为游戏的面板类。此外&#xff0c;再新建一个Data类作为数据中心(存放了小蛇各部分图像的…

微信朋友圈全新玩法,轻松互动,引爆你的社交圈

随着社交媒体的普及&#xff0c;越来越多的人开始利用朋友圈来展示自己的生活和与朋友互动。而在这个数字时代&#xff0c;定时发圈、跟圈和朋友圈互动已经成为了一种社交习惯。本文将介绍这些功能的概念和一键转发朋友圈的实现方法。 什么是定时发圈、跟圈、朋友圈互动和一键转…

Embedding技术与应用(4): Embedding应用工程探析

编者按&#xff1a;随着互联网内容数量的急剧增长&#xff0c;个性化推荐已成为各大科技公司的核心竞争力之一。那么&#xff0c;如何构建一个可靠、高效的基于嵌入技术的推荐系统&#xff0c;使其能够在实际生产环境中正常运行呢&#xff1f;这是所有从业者都关心的问题。 本文…

git的实验:cherry-pick,github对比代码的两种方式

某个commit&#xff0c;比如 c1&#xff0c;&#xff0c;最早是在a分支做的&#xff0c;当被cherry-pick到b分之后&#xff0c;还是一样的revision吗&#xff1f; 实验1&#xff1a;c1被cherry-pick到别的分支后&#xff0c;revision不变对吗&#xff1f;&#xff08;答案是变…

druid keepAlive 导致数据库连接数飙升

一.背景 应用在执行完某个复杂业务&#xff0c;主要包含20几个查询SQL的操作后&#xff0c;会导致数据库连接池一直升高 druid版本&#xff1a;1.2.11 druid配置文件&#xff1a; spring.datasource.druid.maxActive100 spring.datasource.druid.initialSize20 spring.datas…

python解决登录图形验证码

摘要:测试过程中经常遇到图片验证码,以下主要是调用百度OCR图片识别获取验证码,实现登录 1、百度云申请创建应用

【自动驾驶】一些业内自动驾驶专业术语释义

Trajectory 轨迹信息&#xff0c;一般都会发布未来5-10秒的trajactory信息。 Trajectory flicker 轨迹抖动 Nudge 道内避障。在维持车道不变的情况下&#xff0c;横向偏离车道中心以绕开obstacle/agent。 Xlane Nudge 借道避障。借用对向车道或自行车道以绕开obstacle/a…

VMware Workstation 与 Device/Credential Guard 不兼容 解决办法

问题描述 问题描述&#xff1a; VMware 启动虚拟机会报错。无法运行。 错误信息&#xff1a;VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 原因分析&#xff1a; 通常原因是 Window 系统开启了 内置的Hyper-V 虚拟机。 解决方案&…

气死了,过五关,斩六将,结果被 HR 捅了一刀!!

Hello&#xff0c;大家好&#xff0c;我是 Sunday。 大家有没有遇到过这样的事情&#xff1a;“过五关&#xff0c;斩六将。通过了两轮、甚至是三轮的技术面&#xff0c;最后 HR 面被“捅死”了” 这样的事情&#xff0c;最近在一位同学身上连续出现了两次&#xff0c;弄得人…

【资深硬件工程师总结-千兆以太网设计指南】

文章目录 01通用PCB布线指南02标志焊盘中的接地过孔区示例03EMI注意事项04ESD注意事项 资深硬件工程师总结-千兆以太网设计指南 本应用笔记旨在帮助客户使用Microchip的10/100/1000 Mbps以太网器件系列设计PCB。本文档提供有关PCB布线的建 议&#xff0c; PCB 布线是保持信号完…

【算法挨揍日记】day30——300. 最长递增子序列、376. 摆动序列

300. 最长递增子序列 300. 最长递增子序列 题目解析&#xff1a; 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#…

递增递减运算符 ++ -- 前置后置的区别

1 18 运算符-算术运算符-递增递减_哔哩哔哩_bilibili 2 .1 #include <iostream> using namespace std; int main() {int a 0;int b 0;a ;b ;cout << "a " << a << endl;cout << "b " << b << endl;} 输出…

whip和whep

原文为runner365.git大佬的文章 原文链接&#xff1a;https://blog.csdn.net/sweibd/article/details/124552793 WHIP接口 什么是whip 全称: WebRTC-HTTP ingestion protocol (WHIP). rfc地址: rfc-draft-murillo-whip-00 简单说&#xff0c;就是通过HTTP接口能导入webrtc媒…

上位机与plc写心跳定时扫描连接状态

方法一&#xff1a;上位机读plc的某个地址&#xff0c;每秒 置0和置1&#xff0c;plc检查地址值每3秒值都是1就报错。 方法二&#xff1a;上位机每两秒给地址置1&#xff0c;plc一秒读到1就清除信号&#xff0c;读到0说明心跳掉线了。

C++电脑组装项目(涉及知识点:多态)

需求&#xff1a; #include <iostream> #include "Computer.h" #include "AbstractCpu.h" #include "AbstractMemory.h" #include "AbstractVideoCard.h" #include "IntelCpu.h" #include "IntelMemory.h" …

Redis的持久化(新)

Redis中数据都保存在内存&#xff0c;但是内存中的数据变换很快&#xff0c;也很容易丢失&#xff0c;比如连接断开、宕机停机等等。而Redis提供的数据持久化机制有RDB(Redis DataBase)和AOF(Append Only File)。 1.RDB RDB是指在指定的时间间隔内将内存中的数据集快照写入到磁…