検索

Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。Oracle的多版本一致性读,使得Oracle查询具有读一致

1.Oracle数据库的一致性是通过多版本一致性模型和多种类型的锁和事务来实现的。

2.Oracle的多版本一致性读,使得Oracle查询具有读一致性查询和非阻塞读两个特性。

3.语句级的一致性指查询返回的结果与发起查询的时间点保持一致并且当时已提交的数据。例如:当SQL语句在SCN=1000发起,则在提交读的隔离级别下,返回的结果和SCN=1000保持一致;在序列化或者只读的事务中,事务中所有的查询都与事务开始时间点保持一致;在闪回查询中,查询结果和语句中指定的时间点保持一致。

4.事务界别的一致性:

即Oracle可以保证事务中的所有语句查询的结果和事务开始时间点保持一致。

串行化事务中的查询可以看到事务自身引起的修改。

事务级别的一致性可以保证可重复读,但是不保证幻影读。

5.读一致性和undo段

Oracle的读一致性和非阻塞读主要通过undo来实现,在undo段中存放事务所做的修改的旧值,这样某事务进行过程中,可以对事务外查询提供旧值的查询,即读一致性。

6.读一致性和事务表

每个数据块的块头都有一个ITL(interested transaction list),当Oracle需要对数据块进行修改时,会利用ITL来判断事务是否提交。(Oracle默认的隔离级别为提交读,不会读取未提交事务的数据)

ITL里的内容描述了哪些事务在数据块中有行锁和哪些行被已提交或未提交事务做了改变。

ITL指向UNDO段里的事务表,事务表里记录了数据库发生的所有改变的时序。

从某种意义上来说,ITL里记录了最近数据块里所有的被改变行记录的历史信息,INITRANS参数决定了数据块里保留的事务历史。

7.锁机制

一般来说,多用户的数据库使用数据锁来解决与数据并发性、一致性和完整性相关的问题。锁主要是阻止访问相同资源的事务之间发生破坏性的影响。

8.ANSI/ISO的事务隔离级别

其中,,脏读是指读取到其他事务未提交的数据;不可重复读是指第二次读时,比第一次读数据被删除,第一次查询结果有改变;幻影读是指第二次查询时,查询结果比第一次更多,但是第一次查询的结果集没有发生改变。

9.read commited隔离级别

oracle为每一条查询语句提供一致性的查询结果,不需要人工干预。

例如update语句中的where字句查询,也是可以提供一致性查询结果的,只是该隐式查询并不能看到自己的修改,只能看到隐式查询之前发生的修改。

如果在select列表中含有函数(如count(),sum(),自定义函数),则 函数中的每一条SQL都将在语句级实现一致性,而不是在父select语句级保持一致性,函数内的每一条SQL语句在执行时,”一致性读快照“都已经建立。也就是说,select列表里的函数的执行过程中,会读取其他事务提交的改变。例如,某select列表含有10个函数,均对一张表进行操作,事务总共执行时间为1小时,在这一小时中若有其他用户对该表进行了修改并提交,则后面的函数(例如最后一个函数)则将读到其他用户修改后的数据。

10.提交读事务中的写冲突

当一个事务A尝试去修改某未提交事务B所修改的数据块,则发生了写冲突,A事务会等待B事务结束(回滚或提交)释放相应锁后,再继续执行。这里有两种情况:第一,当B事务回滚了,则A事务继续处理之前被锁定的行数据,就像B事务从来没有发生过一样;第二,当B事务提交了,则A事务继续执行其之前想要处理的行记录。

11.串行化隔离级别

串行化隔离级别下,事务只能看到事务开始时间的已提交改变和事务自己看到的改变。串行化事务仿佛没有其他事务在对数据库进行修改。

串行化事务使用的场景:第一,事务较短且处理的记录数较少;第二,俩事务同时处理相同记录的几率较低;第三,运行时间相对较长的事务主要都是只读事务。

串行化事务只会处理事务开始时,已经提交的数据,当串行化事务处理其他未提交事务修改的数据时,会报错。“ORA-08177: Cannot serialize access for this transaction“

12.只读隔离级别

只读隔离级别类似于串行化隔离级别,只是只读隔离级别不会修改数据(SYS用户除外);

只读事务主要用于要求报表内容数据必须和开始报表时间保持一致的场景。

本文永久更新链接地址

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLのライセンスは、他のデータベースシステムと比較してどうですか?MySQLのライセンスは、他のデータベースシステムと比較してどうですか?Apr 25, 2025 am 12:26 AM

MySQLはGPLライセンスを使用します。 1)GPLライセンスにより、MySQLの無料使用、変更、分布が可能になりますが、変更された分布はGPLに準拠する必要があります。 2)商業ライセンスは、公的な変更を回避でき、機密性を必要とする商用アプリケーションに適しています。

MyisamよりもInnodbを選びますか?MyisamよりもInnodbを選びますか?Apr 25, 2025 am 12:22 AM

Myisamの代わりにInnoDBを選択する場合の状況には、次のものが含まれます。1)トランザクションサポート、2)高い並行性環境、3)高いデータの一貫性。逆に、Myisamを選択する際の状況には、1)主に操作を読む、2)トランザクションサポートは必要ありません。 INNODBは、eコマースプラットフォームなどの高いデータの一貫性とトランザクション処理を必要とするアプリケーションに適していますが、Myisamはブログシステムなどの読み取り集約型およびトランザクションのないアプリケーションに適しています。

MySQLの外国キーの目的を説明してください。MySQLの外国キーの目的を説明してください。Apr 25, 2025 am 12:17 AM

MySQLでは、外部キーの機能は、テーブル間の関係を確立し、データの一貫性と整合性を確保することです。外部キーは、参照整合性チェックとカスケード操作を通じてデータの有効性を維持します。パフォーマンスの最適化に注意し、それらを使用するときに一般的なエラーを避けてください。

MySQLのインデックスのさまざまなタイプは何ですか?MySQLのインデックスのさまざまなタイプは何ですか?Apr 25, 2025 am 12:12 AM

MySQLには、B-Treeインデックス、ハッシュインデックス、フルテキストインデックス、空間インデックスの4つのメインインデックスタイプがあります。 1.B-Treeインデックスは、範囲クエリ、ソート、グループ化に適しており、従業員テーブルの名前列の作成に適しています。 2。HASHインデックスは、同等のクエリに適しており、メモリストレージエンジンのHASH_TABLEテーブルのID列の作成に適しています。 3。フルテキストインデックスは、記事テーブルのコンテンツ列の作成に適したテキスト検索に使用されます。 4.空間インデックスは、地理空間クエリに使用され、場所テーブルのGEOM列での作成に適しています。

MySQLでインデックスをどのように作成しますか?MySQLでインデックスをどのように作成しますか?Apr 25, 2025 am 12:06 AM

tocreateanindexinmysql、usethecreateindexstatement.1)forasinglecolumn、 "createdexidx_lastnameonemployees(lastname);" 2)foracompositeindexを使用して、 "createindexidx_nameonemployees(lastname、firstname);" 3); "3)、" 3)を使用します

MySQLはSQLiteとどのように違いますか?MySQLはSQLiteとどのように違いますか?Apr 24, 2025 am 12:12 AM

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスとは何ですか?また、パフォーマンスをどのように改善しますか?MySQLのインデックスとは何ですか?また、パフォーマンスをどのように改善しますか?Apr 24, 2025 am 12:09 AM

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

データの一貫性を確保するために、MySQLでトランザクションを使用する方法を説明します。データの一貫性を確保するために、MySQLでトランザクションを使用する方法を説明します。Apr 24, 2025 am 12:09 AM

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません