今天在调一些固定的SQL,调整一下写法,加点注释,改几个别名什么的,本身没什么事情。 结果在其中某一个SQL的时候,忽然卡住了。一共是三个左连接一个EXISTS,每张表都不超过一百万行。按道理说,这种SQL就算慢,也不会超过一分钟,就得出结果。结果执行的
今天在调一些固定的SQL,调整一下写法,加点注释,改几个别名什么的,本身没什么事情。
结果在其中某一个SQL的时候,忽然卡住了。一共是三个左连接一个EXISTS,每张表都不超过一百万行。按道理说,这种SQL就算慢,也不会超过一分钟,就得出结果。结果执行的效果让我很困惑。头一次执行的时候很快,非常快,两秒出结果。再执行一次,就要很久了,反正我是没等到过结果。最长一次等了半小时,我中午饭都吃完了思密达。。。
看计划,没问题,一点问题都没有。看数据库的负载,也没什么问题。可以说库是很闲的。那这是为啥?能执行,能有速度快的,说明Oracle能找到基本正确的计划。但是为什么第二次会慢呢?一下子就想到了一个新特性,11g里对执行计划的新改进。
_OPTIMIZER_USE_FEEDBACK
简单可以理解为这是Oracle对CBO的一种持续改进。本身PLAN就是基于各种数据对实际执行时间的一种推测,COST也是基于一些算法得到的结果,不是一个确切的值。当Oracle执行过这个语句以后,可以在实际环境中得到一些采样结果,这些结果是实际跑出来的,不是推测或者算出来的。这些值比计算得到的COST和ROWS要来的靠谱的多,于是11g就打算用这些值来做动态推测,基于一个可信的执行计划的详细明细来得到更加贴切实际的计划改进。
但是俗话说的好,Oracle不到R2不要用,咳咳。。。
我的SQL就是被这个参数给搞了一下,Oracle依据首次执行的结果优化了,然后我郁闷了。。。
说说验证和解决办法吧。验证的话可以加HINT,OPT_PARAM(’_OPTIMIZER_USE_FEEDBACK‘,‘FALSE’)。如果加过以后,执行效果不再乱飘了,那么就去把这个隐含参数改成false吧。
提示一下,改隐含参数要加引号,写成“a“=b的样子,具体怎么改就不说了,能看到这里的人,改个参数还是会的,是吧。可以改session和system,都不用重启。
原文地址:11g新特性之忽快忽慢的执行速度, 感谢原作者分享。

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

メモ帳++7.3.1
使いやすく無料のコードエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック









