머리말: 프로그래머의 일상 업무에서 데이터베이스를 다루는 것은 불가피합니다. 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에서는 사용자가 수동으로 제출해야 합니다.
명령을 작성하거나 <br>commit
2. 페이징 쿼리
MySQL에서는 다음 SQL 언어를 직접 사용하여 쿼리할 수 있으며, 페이징은 제한적으로 구현할 수 있습니다.
rrreee
하지만 Oracle은 의사 열
과 중첩 쿼리를 사용해야 합니다. <strong>ROWNUM</strong>
는 레코드의 행 번호를 나타냅니다. 행을 획득한 후 할당된다는 점에 유의하세요. 따라서 1차 쿼리 언어에서는
간격을 지정하여 페이지네이션된 데이터를 얻을 수 없으며, 별도의 쿼리가 필요하다.
3
, 트랜잭션 격리 수준
MySQL의 기본 격리 수준은
commited
<p>반복 가능<strong></strong></p>
입니다. 동시에 둘 다 직렬화 가능 직렬화 트랜잭션 격리 수준을 지원하여 최고 수준의 읽기 일관성을 달성합니다.
4. 트랜잭션 지원
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!