(8.0.26)
調べた限りなし
(19c)
自動SQLチューニング
自動実装が有効になっている場合、アドバイザはSQLプロファイルを作成するための推奨事項のみを実装します。
新しい索引の作成、オプティマイザ統計の収集、SQL計画ベースラインの作成などの推奨事項は、自動的には実装されません。
ACCEPT_SQL_PROFILES
-- ルート・コンテナで実行
exec DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER( -
parameter => 'ACCEPT_SQL_PROFILES', -
value =>'TRUE');
exec DBMS_AUTO_SQLTUNE.SET_AUTO_TUNING_TASK_PARAMETER( -
parameter => 'ACCEPT_SQL_PROFILES', -
value =>'FALSE');
select * from DBA_ADVISOR_PARAMETERS
where PARAMETER_NAME = 'ACCEPT_SQL_PROFILES'
;
select * from DBA_ADVISOR_PARAMETERS
where TASK_NAME = 'SYS_AUTO_SQL_TUNING_TASK'
and PARAMETER_VALUE !='UNUSED'
;
select * from DBA_AUTOTASK_WINDOW_CLIENTS;
show parameter ENABLE_AUTOMATIC_MAINTENANCE_PDB;
デフォルトでは、ENABLE_AUTOMATIC_MAINTENANCE_PDBが、CDB$ROOT (CDBのルート・コンテナ)およびCDBの個別のPDBでtrueになっています。
これは、デフォルトで、自動メンテナンス・タスクがCDBルートおよびCDBのすべてのPDBに対して実行されることを意味します。
(13)
pg_plan_advsr
https://github.com/ossc-db/pg_plan_advsr
https://qiita.com/nuko_yokohama/items/6e54b1fe412fe96c9873
前提
OS: CentOS7
-- 1. DBインストール
yum -y install git gcc krb5-devel openssl-devel
yum -y install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum info postgresql13-server -y
yum -y install epel-release centos-release-scl
yum -y install postgresql13-server postgresql13-contrib postgresql13-devel postgresql13-libs
/usr/pgsql-13/bin/postgres --version
export PGSETUP_INITDB_OPTIONS='-E UTF8 --locale=C'
/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl enable postgresql-13
systemctl start postgresql-13
systemctl status postgresql-13
su - postgres
psql
create database test;
-- 2. pg_plan_advsrインストール
git clone https://github.com/ossc-db/pg_hint_plan.git
git clone https://github.com/ossc-db/pg_store_plans.git
git clone https://github.com/ossc-db/pg_plan_advsr.git
cd pg_hint_plan
git checkout -b PG13 origin/PG13 && git checkout $(git describe --tag)
cd ../pg_store_plans
git checkout $(git describe --tag)
cd ../pg_hint_plan
make PG_CONFIG=/usr/pgsql-13/bin/pg_config
sudo make PG_CONFIG=/usr/pgsql-13/bin/pg_config install
cp pg_stat_statements.c ../pg_plan_advsr/
cp normalize_query.h ../pg_plan_advsr/
cd ../pg_store_plans
sudo make PG_CONFIG=/usr/pgsql-13/bin/pg_config USE_PGXS=1 all install
cp pgsp_json*.[ch] ../pg_plan_advsr/
cd ../pg_plan_advsr/
git describe --alway
make PG_CONFIG=/usr/pgsql-13/bin/pg_config
sudo make PG_CONFIG=/usr/pgsql-13/bin/pg_config install
vim $PGDATA/postgresql.conf
shared_preload_libraries = 'pg_hint_plan, pg_plan_advsr, pg_store_plans'
max_parallel_workers_per_gather = 0
max_parallel_workers = 0
sudo systemctl restart postgresql-13
psql test
create extension pg_hint_plan;
create extension pg_store_plans;
create extension pg_plan_advsr;
\dx
-- 3. 動作確認
-- 参考サイトの再現不可。最初からNLになる
drop table t1;
create table t1 (a int, b int);
insert into t1 (select a, random() * 1000 from generate_series(0, 999999) a);
create index i_t1_a on t1 (a);
analyze t1;
drop table t2;
create table t2 (a int, b int);
insert into t2 (select a, random() * 1000 from generate_series(0, 999999) a);
create index i_t2_a on t2 (a);
analyze t2;
explain analyze
with x as (
select *
from t1
limit 20010
)
select *
from ( select *
from t1
where a in (select a from x)
) tmp,
t2
where tmp.a = t2.a;
select pg_plan_advsr_enable_feedback();
select pg_plan_advsr_disable_feedback();
show pg_plan_advsr.enabled;
show pg_hint_plan.enable_hint_table;
show pg_hint_plan.debug_print;
select * from plan_repo.plan_history;
select * from plan_repo.norm_queries;
select * from plan_repo.raw_queries;
自動プラン修正
自動チューニングを SQL Server 使用すると、
クエリ実行プランの選択の回帰 によって発生するパフォーマンスの問題を特定し、修正することができます
※自動プラン修正は、ワークロード追跡のためにデータベースで有効になっているクエリストアに依存します。
--クエリのストアを有効にする
ALTER DATABASE test SET QUERY_STORE = ON;
go
-- 自動プラン選択修正の有効化
ALTER DATABASE test
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
go
このオプションを有効にすると、では、 データベース エンジン 推定 CPU 到達率が10秒を超える場合、
または新しいプランのエラー数が推奨されるプランのエラー数よりも多い場合、によって自動的に推奨設定が強制されます。
また、強制されたプランが現在のプランより優れていることを確認します。
select name,is_query_store_on from sys.databases;
go
SELECT * FROM sys.database_automatic_tuning_options
go