>  기사  >  데이터 베이스  >  MySQL과 Oracle의 차이점 소개

MySQL과 Oracle의 차이점 소개

王林
王林원래의
2019-08-15 13:45:392036검색

머리말: 프로그래머의 일상 업무에서 데이터베이스를 다루는 것은 불가피합니다. mysql, oracle, sql server 등 우리가 알고 있는 데이터베이스는 많습니다.

오늘은 mysql과 데이터베이스에 대한 몇 가지 정보를 소개하겠습니다. 오라클. 단순한 차이점. (권장: mysql 동영상 튜토리얼)

1, Transaction submit

MySQL은 기본적으로 트랜잭션을 커밋하는데, 트랜잭션의 시작을 표시하는 <code><strong>START TRANSACTION</strong>标志着一个事务的开始,否则使用rollback无法回滚数据。

Oracle需要用户手动提交,需要写<strong>commit</strong>命令或者点击<strong>commit</strong>按钮。

2、分页查询

MySQL可以直接使用以下sql语言进行查询,有limit就可以实现分页。

select ... from ... where ... limit x,y

limit后面的两个参数中,x表示起始下标,从0开始,y表示返回的记录数。

但是oracle需要用到伪列<strong>ROWNUM</strong>和嵌套查询。<strong>ROWNUM</strong>表示一条记录的行号,需要注意的是它在获取一行后才赋予。因此通过指定<strong>ROWNUM</strong>区间来取得分页数据在一层查询语言中是无法做到的,还需要再进行一次查询。

3事务隔离级别

MySQL的默认隔离级别为<strong>read </strong>commited,oracle的默认隔离级别为<strong>repeatable</strong>。同时二者都支持serializable串行化事务隔离级别,实现最高级别的读一致性。

4、对事务的支持

MySQL在innodb存储引擎的行级锁的情况下才可支持事务,但是oracle则完全支持事务。

5、保存数据持久性

MySQL是在数据库更新或者重启,会丢失数据,Oracle把提交的sql操作线写入了在线联机日志文件中,保存到了磁盘,是可以随时恢复的。

6、并发性

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

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

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

7、逻辑备份

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

8、复制

MySQL复制服务器配置很简单,但是主库出现问题时,丛库可能会丢失一定数据,且需要手工切换从丛库。

Oracle既有推或拉式的传统数据复制,也有<strong>dataguard</strong>START TRANSACTION

이 있어야 하며, 그렇지 않으면 롤백을 사용하여 데이터를 롤백할 수 없습니다.

Oracle에서는 사용자가 수동으로 제출해야 합니다.

commit

명령을 작성하거나 <br>commit

버튼을 클릭해야 합니다.

2. 페이징 쿼리

MySQL에서는 다음 SQL 언어를 직접 사용하여 쿼리할 수 있으며, 페이징은 제한적으로 구현할 수 있습니다.
rrreee

limit 뒤의 두 매개변수 중 x는 0부터 시작하는 시작 인덱스를 나타내고, y는 반환되는 레코드 수를 나타냅니다.


하지만 Oracle은 의사 열

ROWNUM

과 중첩 쿼리를 사용해야 합니다. <strong>ROWNUM</strong>는 레코드의 행 번호를 나타냅니다. 행을 획득한 후 할당된다는 점에 유의하세요. 따라서 1차 쿼리 언어에서는

ROWNUM

간격을 지정하여 페이지네이션된 데이터를 얻을 수 없으며, 별도의 쿼리가 필요하다.

3

, 트랜잭션 격리 수준


MySQL의 기본 격리 수준은

read


commited

이며, Oracle의 기본 격리 수준은 <p>반복 가능<strong></strong></p>입니다. 동시에 둘 다 직렬화 가능 직렬화 트랜잭션 격리 수준을 지원하여 최고 수준의 읽기 일관성을 달성합니다.


4. 트랜잭션 지원

🎜🎜MySQL은 innodb 스토리지 엔진의 행 수준 잠금이 있는 트랜잭션만 지원할 수 있지만 Oracle은 트랜잭션을 완벽하게 지원합니다. 🎜🎜🎜🎜5. 데이터 지속성 저장🎜🎜🎜MySQL은 데이터베이스가 업데이트되거나 다시 시작되면 데이터가 손실됩니다. Oracle은 제출된 SQL 작업 줄을 온라인 로그 파일에 기록하고 언제든지 복원할 수 있는 디스크에 저장합니다. . 🎜🎜🎜🎜6. 동시성🎜🎜🎜MySQL은 주로 테이블 수준 잠금을 사용하며 리소스 잠금의 세분성이 매우 큽니다. 세션이 테이블을 너무 오랫동안 잠그면 다른 세션의 데이터가 이 테이블은 변경할 수 없습니다. 🎜🎜🎜InnoDB 엔진의 테이블은 행 수준 잠금을 사용할 수 있지만 이 행 수준 잠금 메커니즘은 테이블에 인덱스가 없는 경우 또는 SQL에 따라 달라집니다. 문에 인덱스가 없으면 테이블 수준에서는 여전히 잠금이 사용됩니다. 🎜🎜🎜Oracle은 훨씬 더 작은 단위로 리소스를 잠그는 행 수준 잠금을 사용하며, 잠금은 데이터베이스의 데이터 행에 적용되며 인덱스에 의존하지 않습니다. 따라서 동시성에 대한 Oracle의 지원이 훨씬 더 좋습니다. 🎜🎜🎜7. 논리적 백업🎜🎜🎜MySQL은 백업된 데이터의 일관성을 보장하기 위해 논리적 백업 중에 데이터를 잠가야 합니다. 이는 Oracle이 사용하는 일반적인 dml에 영향을 미치지 않습니다. 논리적 백업 중에 데이터를 잠그고 백업된 데이터는 일관성이 있습니다. 🎜🎜🎜🎜 8. 복제 🎜🎜🎜 MySQL 복제 서버 구성은 매우 간단하지만, 메인 데이터베이스에 문제가 있을 경우 클러스터 데이터베이스의 특정 데이터가 손실될 수 있으며, 슬레이브 클러스터 데이터베이스를 수동으로 전환해야 합니다. 🎜🎜🎜Oracle은 푸시 또는 풀 기존 데이터 복제와 🎜dataguard🎜의 이중 시스템 또는 다중 시스템 재해 복구 메커니즘을 모두 갖추고 있습니다. 기본 데이터베이스에 문제가 발생하면 대기 데이터베이스가 복구될 수 있습니다. 자동으로 기본 데이터베이스로 전환되지만 데이터 관리는 더 복잡합니다. 🎜🎜🎜9. 성능 판단 🎜🎜🎜MySQL에는 진단 및 조정 방법이 거의 없으며 주로 쿼리 로그가 느립니다. 🎜🎜🎜오라클은 많은 자동 분석을 달성할 수 있는 다양하고 성숙한 성능 진단 및 튜닝 도구를 보유하고 있습니다. 🎜🎜🎜10. 권한 및 보안🎜🎜🎜MySQL 사용자는 호스트와 연관되어 있어 호스트와 IP가 쉽게 위조될 수 있습니다. 🎜🎜🎜Oracle의 권한과 보안 개념은 비교적 전통적입니다. 🎜🎜🎜🎜11. 분할된 테이블과 분할된 인덱스🎜🎜🎜MySQL의 분할된 테이블은 성숙하지 않고 안정적이지 않습니다. 🎜🎜🎜오라클의 파티션 테이블과 파티션 인덱스 기능은 매우 성숙하여 사용자의 DB 액세스 경험을 향상시킬 수 있습니다. 🎜🎜🎜12. 관리 도구 🎜🎜🎜MySQL에는 관리 도구가 더 적습니다. 동시에 Linux에서 관리 도구를 설치하려면 추가 패키지를 설치해야 하는 경우가 있어 더 복잡합니다. 🎜🎜🎜Oracle에는 상대적으로 효율적이고 편리한 성숙한 명령줄, 그래픽 인터페이스, 웹 관리 도구 및 타사 관리 도구가 많이 있습니다. 🎜🎜🎜🎜마지막으로: 🎜MySQL은 가벼운 데이터베이스이며 무료이며 데이터를 복원하는 서비스가 없습니다. 🎜🎜Oracle은 가중치 데이터베이스이므로 요금이 부과됩니다. Oracle 회사는 Oracle 데이터베이스에 대한 모든 서비스를 제공합니다. 🎜🎜

위 내용은 MySQL과 Oracle의 차이점 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.