`
wsql
  • 浏览: 11786354 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

SQL Plan Management

 
阅读更多

Before 10G we can capture a SQL statement’s execution plan and save it into a stored outline.

Thus we can change the execution plan without any SQL modification.

In 10G it is called SQL Profiles .

In 11G it is called SQL Plan Management.

They take same fuctions although the ways of implementation are different.

See the example like below:


SQL> create table t (id number,name varchar2(100));

表已创建。

SQL> insert into t select rownum,object_name from dba_objects;

已创建72993行。

SQL> commit;

提交完成。

SQL> set autotrace traceonly exp stat;
SQL>

SQL> select * from t where id=3;


执行计划
----------------------------------------------------------
Plan hash value: 1601196873

----------------------------------
| Id | Operation | Name |
----------------------------------
| 0 | SELECT STATEMENT | |
|* 1 | TABLE ACCESS FULL| T |
----------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter("ID"=3)

Note
-----
- rule based optimizer used (consider using cbo)


统计信息
----------------------------------------------------------
2 recursive calls
1 db block gets
382 consistent gets
0 physical reads
176 redo size
480 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
0 sorts (memory)
0 sorts (disk)
1 rows processed

SQL> select sql_text,signature,sql_handle,plan_name,origin,enabled,accepted, autopurge
from dba_sql_plan_baselines where sql_text like '%select * from t where id=3%'
SQL> /

未选定行

SQL> alter session set optimizer_capture_sql_plan_baselines=true;

会话已更改。

SQL> select * from t where id=3;

ID
----------
NAME
--------------------------------------------------------------------------------
3
CON$


SQL> select sql_text,signature,sql_handle,plan_name,origin,enabled,accepted, autopurge
2 from dba_sql_plan_baselines where sql_text like '%select * from t where id=3%';

SQL_TEXT
--------------------------------------------------------------------------------
SIGNATURE SQL_HANDLE PLAN_NAME
---------- ------------------------------ ------------------------------
ORIGIN ENA ACC AUT
-------------- --- --- ---
select * from t where id=3
9.9679E+18 SYS_SQL_8a54f32d904f9eda SQL_PLAN_8np7m5q84z7qu94ecae5c
AUTO-CAPTURE YES YES YES

Add the index.
SQL> create index idx_t on t(id);

索引已创建。

SQL> exec dbms_stats.gather_table_stats(user,'t',cascade=>true)

PL/SQL 过程已成功完成。

SQL> select * from t where id=3;

ID
----------
NAME
--------------------------------------------------------------------------------
3
CON$


SQL> select sql_text,signature,sql_handle,plan_name,origin,enabled,accepted, autopurge
2 from dba_sql_plan_baselines where sql_text like '%select * from t where id=3%';

SQL_TEXT
--------------------------------------------------------------------------------
SIGNATURE SQL_HANDLE PLAN_NAME
---------- ------------------------------ ------------------------------
ORIGIN ENA ACC AUT
-------------- --- --- ---
select sql_text,signature,sql_handle,plan_name,origin,enabled,accepted, autopurg
8.0612E+18 SYS_SQL_6fdf0504e8efd004 SQL_PLAN_6zrs50mnfzn04391601ca
AUTO-CAPTURE YES YES YES

select * from t where id=3
9.9679E+18 SYS_SQL_8a54f32d904f9eda SQL_PLAN_8np7m5q84z7qu880b6daf
AUTO-CAPTURE YES NO YES

SQL_TEXT
--------------------------------------------------------------------------------
SIGNATURE SQL_HANDLE PLAN_NAME
---------- ------------------------------ ------------------------------
ORIGIN ENA ACC AUT
-------------- --- --- ---

select * from t where id=3
9.9679E+18 SYS_SQL_8a54f32d904f9eda SQL_PLAN_8np7m5q84z7qu94ecae5c
AUTO-CAPTURE YES YES YES
the changed plan(using index) was captured automatically but can not be used by itself becaue the first one is default.
SQL> select * from t where id=3;

ID
----------
NAME
--------------------------------------------------------------------------------
3
CON$



执行计划
----------------------------------------------------------
Plan hash value: 1601196873

--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 29 | 96 (2)| 00:00:02 |
|* 1 | TABLE ACCESS FULL| T | 1 | 29 | 96 (2)| 00:00:02 |
--------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

1 - filter("ID"=3)

Note
-----
- SQL plan baseline "SQL_PLAN_8np7m5q84z7qu94ecae5c" used for this statement

See the accept column is NO for the second SQL PLAN.

Let us disable the first one .Then the second is not accepted either.

SQL> /

ID
----------
NAME
--------------------------------------------------------------------------------
3
CON$



执行计划
----------------------------------------------------------
Plan hash value: 1594971208

--------------------------------------------------------------------------------
-----

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|

--------------------------------------------------------------------------------
-----

| 0 | SELECT STATEMENT | | 1 | 29 | 1 (0)| 00:00
:01 |

| 1 | TABLE ACCESS BY INDEX ROWID| T | 1 | 29 | 1 (0)| 00:00
:01 |

|* 2 | INDEX RANGE SCAN | IDX_T | 1 | | 1 (0)| 00:00
:01 |

--------------------------------------------------------------------------------
-----


Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("ID"=3)

Let us enable the second one.

Make it accepted.

SQL> /

ID
----------
NAME
--------------------------------------------------------------------------------
3
CON$



执行计划
----------------------------------------------------------
Plan hash value: 1594971208

--------------------------------------------------------------------------------
-----

| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
|

--------------------------------------------------------------------------------
-----

| 0 | SELECT STATEMENT | | 1 | 29 | 1 (0)| 00:00
:01 |

| 1 | TABLE ACCESS BY INDEX ROWID| T | 1 | 29 | 1 (0)| 00:00
:01 |

|* 2 | INDEX RANGE SCAN | IDX_T | 1 | | 1 (0)| 00:00
:01 |

--------------------------------------------------------------------------------
-----


Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("ID"=3)

Note
-----
- SQL plan baseline "SQL_PLAN_8np7m5q84z7qu880b6daf" used for this statement

分享到:
评论

相关推荐

    Healthy SQL.pdf

    Microsoft SQL Server has become an eminent relational database management system (RDBMS) in the marketplace. The SQL Server engine has come a long way from being just another RDBMS; it’s an end-to...

    Murach's SQL Server 2016 for Developers

    Chapter 3, SQL Server Tools, helps you understand the changes in the release management of SQL Server tools and explores small and handy enhancements in SQLServer Management Studio (SSMS). It also ...

    Sybex - Mastering Visual Basic .NET Transact SQL (VBL).pdf

    working with or plan to switch to SQL Server, you’ll need it sooner or later. In addition, you’ll improve your Visual Basic programming. T-SQL is the native language of SQL Server. By seeing how the...

    Pro.SQL.Server.Always.On.Availability.Groups.1484220706.epub

    Plan and deploy Always On Availability Groups in your corporate environment. Manage Availability Groups to ensure constant readiness and high throughput. Monitor Availability Group performance and ...

    微软内部资料-SQL性能优化2

    Before we look at how SQL Server uses and manages its memory, we need to ensure a full understanding of the more common memory related terms. The following definitions will help you understand how SQL...

    微软内部资料-SQL性能优化3

     SOX001109700040 – INF: Queries with PREFETCH in the plan hold lock until the end of transaction Locking Concepts Delivery Tip Prior to delivering this material, test the class to see if they ...

    Beginning Backup and Restore for SQL Server--2018

    Understand the importance of a fully implemented backup plan in SQL Server Agent Integrate backup and restore techniques into an existing environment Consider space and time requirements for backup...

    Microsoft SharePoint 2010 Administrator's Companion

    you'll discover how to plan, design, deploy, and manage strategic solutions using SharePoint 2010, Microsoft SQL Server®, Windows PowerShell™, and other key technologies. Topics include ...

    LINQPad.QueryPlanVisualizer:LINQPadSQL Server和PostgreSQL查询执行计划可视化工具

    在SQL Server Management Studio或其他默认应用中打开计划 将计划保存到磁盘 入门 如果使用LINQPad 6,则必须使用此库的2.0版。 对于LINQPad 5,必须使用1.0版 该库可以显示LINQ to SQL驱动程序和Entity Framework ...

    Oracle Security

    OEM and the Event Management System Chapter 14 Maintaining User Accounts Application Design Requirements Running the Application Documenting the User State A Sample Script Enhanced Oracle ...

    最完整的Toad For Oracle使用手册

    Explain Plan 503 Pinned Code 504 Repair Chained Rows 505 Rebuild Table 506 Unix Kernel Parms 507 Windows Registry Parms 508 Analyze All Objects 509 Profilers 512 Oracle Tuning 523 Rebuild Multiple ...

    Windows Azure Succinctly(Syncfusion,2014)

    Management tasks at the storage layer include configuring storage devices for optimum throughput, monitoring for device failure, tracking utilization, and ensuring that a backup plan exists and is ...

    Infinity Science – Software Engineering and Testing.pdf

    7.8 Test Plan 178 7.9 Test-Case Design 179 Chapter 8. Software-Testing Strategies 181 8.1 Static-Testing Strategies 181 8.2 Debugging 186 8.3 Error, Fault, and Failure 189 Chapter 9. ...

    Building.Clouds.with.Windows.Azure.Pack.178

    Learn about planning and deployment of three Cloud services models of WAP - IaaS, PaaS(WebSites , Service Bus) , DBaaS(SQL, MySQL) Plan and manage Azure Pack plans, subscriptions and add on's for ...

    Pro.MySQL.NDB.Cluster

    Plan, install, and configure a MySQL NDB Cluster environment Perform everyday tasks such as backing up, restoring, and upgrading Develop applications from Java, memcached, C++, and SQL Troubleshoot ...

    Expert.Oracle.Exadata.2nd.Edition.1430262419

    It is also for anyone who needs to plan and execute migrations of systems to the Exadata platform. Finally, the book will be invaluable to those who support and maintain such systems. Table of ...

    Proxy Pattern Informatization Research Based On SaaS

    Above we discuss the basic functions of informatization platform in proxy industry, the remainder of this article will detail the system architecture that can help us plan and build SaaS application....

    ABAP Development for SAP HANA

    1.1.7 Lifecycle Management Components .................. 36 1.2 Basic Principles of In-Memory Technology ..................... 37 1.2.1 Hardware Innovations ....................................... 37 ...

    Securing PHP Web Applications.pdf

    Native Session Management Provides Plenty of Security 9 “My Application Isn’t Major Enough to Get Hacked” 9 The “Barbarians at the Gate” Syndrome 10 Wrapping It Up 10 Part II Is That Hole Really ...

Global site tag (gtag.js) - Google Analytics