PolarDB for PostgreSQL (Kompatibel dengan Oracle) menyediakan paket DBMS_STATS untuk membantu pengumpulan statistik operasional database, pencadangan statistik yang dihasilkan, serta pemulihan statistik. Anda dapat menentukan titik waktu tertentu untuk pencadangan statistik dan memodifikasi statistik tabel sesuai kebutuhan. Dengan cara ini, pengoptimal dapat menghasilkan rencana eksekusi yang lebih akurat.
Prasyarat
Hubungi kami jika Anda memerlukan bantuan untuk menggunakan paket DBMS_STATS.
Menyiapkan data uji
Data uji hanya berlaku untuk contoh-contoh yang disediakan dalam topik ini.
Buat skema bernama
dbms_stats_schema.CREATE SCHEMA dbms_stats_schema;Buat tabel bernama
dbms_stats_test.CREATE TABLE dbms_stats_schema.dbms_stats_test(id int);Buat indeks.
CREATE INDEX dbms_stats_index on dbms_stats_schema.dbms_stats_test(id);Masukkan data.
INSERT INTO dbms_stats_schema.dbms_stats_test values (generate_series(1,10000));
DBMS_STATS.GATHER_SCHEMA_STATS
Fungsi ini digunakan untuk mengumpulkan dan mencadangkan statistik skema.
Syntax
DBMS_STATS.GATHER_SCHEMA_STATS (
ownname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan nama skema yang ingin Anda analisis. | Ya |
Examples
Kumpulkan dan cadangkan statistik skema. Contoh:
CALL DBMS_STATS.GATHER_SCHEMA_STATS('dbms_stats_schema');Kueri status pencadangan statistik skema. Contoh:
SELECT * FROM polar_dbms_stats.backup_history;DBMS_STATS.GATHER_TABLE_STATS
Fungsi ini digunakan untuk mengumpulkan dan mencadangkan statistik tabel.
Syntax
DBMS_STATS.GATHER_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda analisis. | Ya |
tabname | Menentukan nama tabel yang ingin Anda analisis. | Ya |
Examples
Kumpulkan dan cadangkan statistik tabel. Contoh:
CALL DBMS_STATS.GATHER_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');Kueri statistik pencadangan. Contoh:
SELECT * FROM polar_dbms_stats.backup_history;DBMS_STATS.GATHER_DATABASE_STATS
Fungsi ini digunakan untuk mengumpulkan dan mencadangkan statistik database.
Syntax
DBMS_STATS.GATHER_DATABASE_STATS ();Examples
Kumpulkan dan cadangkan statistik database. Contoh:
CALL DBMS_STATS.GATHER_DATABASE_STATS();Kueri statistik pencadangan. Contoh:
SELECT * FROM polar_dbms_stats.backup_history;DBMS_STATS.GATHER_INDEX_STATS
Fungsi ini digunakan untuk mengumpulkan dan mencadangkan statistik indeks.
Syntax
DBMS_STATS.GATHER_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari indeks yang ingin Anda analisis. | Ya |
indname | Menentukan nama indeks yang ingin Anda analisis. | Ya |
Examples
Kumpulkan dan cadangkan statistik indeks. Contoh:
CALL DBMS_STATS.GATHER_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index');Kueri statistik pencadangan. Contoh:
SELECT * FROM polar_dbms_stats.backup_history;DBMS_STATS.GATHER_COLUMN_STATS
Fungsi ini digunakan untuk mengumpulkan dan mencadangkan statistik kolom tertentu.
Syntax
DBMS_STATS.GATHER_COLUMN_STATS (
ownname VARCHAR2,
tablename VARCHAR2,
attname TEXT
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda analisis. | Ya |
tablename | Menentukan nama tabel yang berisi kolom yang ingin Anda analisis. | Ya |
attname | Menentukan nama kolom yang ingin Anda analisis. | Ya |
Examples
Kumpulkan dan cadangkan statistik untuk kolom tertentu. Contoh:
CALL DBMS_STATS.GATHER_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');Kueri status pencadangan statistik kolom. Contoh:
SELECT * FROM polar_dbms_stats.backup_history;DBMS_STATS.RESTORE_SCHEMA_STATS
Fungsi ini digunakan untuk memulihkan statistik skema tertentu.
Syntax
DBMS_STATS.RESTORE_SCHEMA_STATS (
ownname VARCHAR2,
as_of_timestamp TIMESTAMP WITH TIME ZONE
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan nama skema yang ingin Anda pulihkan. | Ya |
as_of_timestamp | Menentukan titik waktu ke mana Anda ingin memulihkan statistik. | Ya |
Examples
Pulihkan statistik untuk skema tertentu. Contoh:
SELECT DBMS_STATS.RESTORE_SCHEMA_STATS('dbms_stats_schema',time) FROM polar_dbms_stats.backup_history WHERE unit='s';Kueri statistik yang dipulihkan. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';DBMS_STATS.RESTORE_DATABASE_STATS
Fungsi ini digunakan untuk memulihkan statistik database.
Syntax
DBMS_STATS.RESTORE_DATABASE_STATS (
as_of_timestamp TIMESTAMP WITH TIME ZONE
);Parameters
Parameter | Deskripsi | Diperlukan |
as_of_timestamp | Menentukan titik waktu ke mana Anda ingin memulihkan statistik. | Ya |
Examples
Pulihkan statistik database. Contoh:
SELECT DBMS_STATS.RESTORE_DATABASE_STATS(time) FROM polar_dbms_stats.backup_history WHERE unit='d';Kueri statistik yang dipulihkan. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';DBMS_STATS.RESTORE_TABLE_STATS
Fungsi ini digunakan untuk memulihkan statistik tabel tertentu.
Syntax
DBMS_STATS.RESTORE_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
as_of_timestamp TIMESTAMP WITH TIME ZONE
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda pulihkan. | Ya |
tabname | Menentukan nama tabel yang ingin Anda pulihkan. | Ya |
as_of_timestamp | Menentukan titik waktu ke mana Anda ingin memulihkan statistik. | Ya |
Examples
Pulihkan statistik untuk tabel tertentu. Contoh:
SELECT DBMS_STATS.RESTORE_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', time) FROM polar_dbms_stats.backup_history WHERE unit='t';Kueri statistik yang dipulihkan. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';DBMS_STATS.RESTORE_COLUMN_STATS
Fungsi ini digunakan untuk memulihkan statistik kolom tertentu.
Syntax
DBMS_STATS.RESTORE_COLUMN_STATS (
ownname TEXT,
tablename TEXT,
attname TEXT,
as_of_timestamp timestamp with time zone
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda pulihkan. | Ya |
tabname | Menentukan nama tabel yang berisi kolom yang ingin Anda pulihkan. | Ya |
attname | Menentukan nama kolom yang ingin Anda pulihkan. | Ya |
as_of_timestamp | Menentukan titik waktu ke mana Anda ingin memulihkan statistik. | Ya |
Examples
Pulihkan statistik untuk kolom tertentu. Contoh:
SELECT DBMS_STATS.RESTORE_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id', time) FROM polar_dbms_stats.backup_history WHERE unit='c';Kueri statistik yang dipulihkan. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema%';DBMS_STATS.PURGE_STATS
Fungsi ini digunakan untuk menghapus statistik pencadangan yang dihasilkan sebelum titik waktu tertentu.
Syntax
DBMS_STATS.PURGE_STATS (
before_timestamp timestamp
);Parameters
Parameter | Deskripsi | Diperlukan |
before_timestamp | Menentukan titik waktu tertentu. Sistem akan menghapus statistik yang dihasilkan sebelum titik waktu tersebut. | Ya |
Examples
Hapus statistik pencadangan yang dihasilkan sebelum titik waktu tertentu. Contoh:
SELECT DBMS_STATS.PURGE_STATS(time) FROM polar_dbms_stats.backup_history WHERE unit='c';DBMS_STATS.SET_TABLE_STATS
Fungsi ini digunakan untuk mengonfigurasi statistik tabel tertentu.
Sebelum memanggil fungsi SET_TABLE_STATS untuk mengonfigurasi statistik tabel, pastikan bahwa statistik tabel telah dikumpulkan. Jika belum, gunakan fungsi GATHER_SCHEMA_STATS atau GATHER_TABLE_STATS untuk mengumpulkannya.
Syntax
DBMS_STATS.SET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda konfigurasi. | Ya |
tabname | Menentukan nama tabel yang ingin Anda konfigurasi. | Ya |
numrows | Menentukan jumlah baris untuk tabel tersebut. | Ya |
numblks | Menentukan jumlah blok untuk tabel tersebut. | Ya |
Examples
Konfigurasikan statistik tabel. Contoh:
CALL DBMS_STATS.SET_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', 1234, 4321);DBMS_STATS.GET_TABLE_STATS
Fungsi ini digunakan untuk menanyakan statistik tabel tertentu.
Syntax
DBMS_STATS.GET_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
numrows OUT NUMBER,
numblks OUT NUMBER
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda tanyakan. | Ya |
tabname | Menentukan nama tabel yang ingin Anda tanyakan. | Ya |
numrows | Menentukan jumlah baris yang ingin Anda tanyakan dari tabel tersebut. | Ya |
numblks | Menentukan jumlah blok yang ingin Anda tanyakan dari tabel tersebut. | Ya |
Examples
Tanyakan statistik tabel. Contoh:
DECLARE
numrows integer;
numblks integer;
BEGIN
CALL DBMS_STATS.GET_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test', numrows, numblks);
raise notice '%', numrows;
raise notice '%', numblks;
END;DBMS_STATS.SET_INDEX_STATS
Fungsi ini digunakan untuk mengonfigurasi statistik indeks.
Syntax
DBMS_STATS.SET_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2,
numrows NUMBER DEFAULT NULL,
numblks NUMBER DEFAULT NULL
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari indeks yang ingin Anda konfigurasi. | Ya |
indname | Menentukan nama indeks yang ingin Anda konfigurasi. | Ya |
numrows | Menentukan jumlah baris yang ingin Anda konfigurasi untuk indeks tersebut. | Ya |
numblks | Menentukan jumlah blok yang ingin Anda konfigurasi untuk indeks tersebut. | Ya |
Examples
Konfigurasikan statistik indeks. Contoh:
CALL DBMS_STATS.SET_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index', 2345, 5432);DBMS_STATS.GET_INDEX_STATS
Fungsi ini digunakan untuk menanyakan statistik indeks tertentu.
Syntax
DBMS_STATS.GET_INDEX_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
numrows OUT NUMBER,
numblks OUT NUMBER
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari indeks yang ingin Anda tanyakan. | Ya |
tabname | Menentukan nama indeks yang ingin Anda tanyakan. | Ya |
numrows | Menentukan jumlah baris yang ingin Anda tanyakan dari indeks tersebut. | Ya |
numblks | Menentukan jumlah blok yang ingin Anda tanyakan dari indeks tersebut. | Ya |
Examples
Tanyakan statistik indeks. Contoh:
DECLARE
numrows integer;
numblks integer;
BEGIN
CALL DBMS_STATS.GET_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index', numrows, numblks);
raise notice '%', numrows;
raise notice '%', numblks;
END;DBMS_STATS.GET_COLUMN_STATS
Fungsi ini digunakan untuk menanyakan statistik kolom tertentu.
Syntax
DBMS_STATS.GET_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
colname VARCHAR2,
distcnt OUT NUMBER,
nullcnt OUT NUMBER,
avgclen OUT NUMBER
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda tanyakan. | Ya |
tabname | Menentukan nama tabel yang berisi kolom yang ingin Anda tanyakan. | Ya |
colname | Menentukan nama kolom yang ingin Anda tanyakan. | Ya |
distcnt | Menentukan jumlah nilai unik dalam kolom yang ingin Anda tanyakan. | Ya |
nullcnt | Menentukan jumlah nilai kosong dalam kolom yang ingin Anda tanyakan. | Ya |
avgclen | Menentukan panjang rata-rata dari kolom yang ingin Anda tanyakan. | Ya |
Examples
Tanyakan statistik kolom. Contoh:
DECLARE
distcnt integer;
nullcnt integer;
avgclen integer;
BEGIN
CALL DBMS_STATS.GET_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id', distcnt, nullcnt, avgclen);
raise notice '%', distcnt;
raise notice '%', nullcnt;
raise notice '%', avgclen;
END;DBMS_STATS.LOCK_TABLE_STATS
Fungsi ini digunakan untuk mengunci statistik tabel yang sedang digunakan.
Syntax
DBMS_STATS.LOCK_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda kunci. | Ya |
tabname | Menentukan nama tabel yang ingin Anda kunci. | Ya |
Examples
Kunci statistik tabel yang sedang digunakan. Contoh:
CALL DBMS_STATS.LOCK_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');Tanyakan statistik yang terkunci. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname = 'dbms_stats_schema.dbms_stats_test';DBMS_STATS.UNLOCK_TABLE_STATS
Fungsi ini digunakan untuk membuka kunci statistik tabel yang sedang digunakan.
Syntax
DBMS_STATS.UNLOCK_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda buka kuncinya. | Ya |
tabname | Menentukan nama tabel yang ingin Anda buka kuncinya. | Ya |
Examples
Buka kunci statistik untuk tabel yang sedang digunakan. Contohnya:
CALL DBMS_STATS.UNLOCK_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');Tanyakan statistik yang terkunci. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname = 'dbms_stats_schema.dbms_stats_test';DBMS_STATS.LOCK_SCHEMA_STATS
Fungsi ini digunakan untuk mengunci statistik skema yang sedang digunakan.
Syntax
DBMS_STATS.LOCK_SCHEMA_STATS (
ownname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan nama skema yang ingin Anda kunci. | Ya |
Examples
Kunci statistik skema yang sedang digunakan. Contoh:
CALL DBMS_STATS.LOCK_SCHEMA_STATS('dbms_stats_schema');Tanyakan statistik yang terkunci. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema.%';DBMS_STATS.UNLOCK_SCHEMA_STATS
Fungsi ini digunakan untuk membuka kunci statistik skema yang sedang digunakan.
Syntax
DBMS_STATS.UNLOCK_SCHEMA_STATS (
ownname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan nama skema yang ingin Anda buka kuncinya. | Ya |
Examples
Buka kunci statistik skema yang sedang digunakan. Contoh:
CALL DBMS_STATS.UNLOCK_SCHEMA_STATS('dbms_stats_schema');Tanyakan statistik yang terkunci. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_locked WHERE relname LIKE 'dbms_stats_schema.%';DBMS_STATS.LOCK_COLUMN_STATS
Fungsi ini digunakan untuk mengunci statistik kolom yang sedang digunakan.
Syntax
DBMS_STATS.LOCK_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
attname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda kunci. | Ya |
tabname | Menentukan nama tabel yang berisi kolom yang ingin Anda kunci. | Ya |
attname | Menentukan nama kolom yang ingin Anda kunci. | Ya |
Examples
Kunci statistik kolom yang sedang digunakan. Contoh:
CALL DBMS_STATS.LOCK_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');DBMS_STATS.UNLOCK_COLUMN_STATS
Fungsi ini digunakan untuk membuka kunci statistik kolom yang sedang digunakan.
Syntax
DBMS_STATS.UNLOCK_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
attname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda buka kuncinya. | Ya |
tabname | Menentukan nama tabel yang berisi kolom yang ingin Anda buka kuncinya. | Ya |
attname | Menentukan nama kolom yang ingin Anda buka kuncinya. | Ya |
Examples
Buka kunci statistik kolom yang sedang digunakan. Contoh:
CALL DBMS_STATS.UNLOCK_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');DBMS_STATS.DELETE_TABLE_STATS
Fungsi ini digunakan untuk menghapus statistik tabel yang ada.
Syntax
DBMS_STATS.DELETE_TABLE_STATS (
ownname VARCHAR2,
tabname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari tabel yang ingin Anda hapus. | Ya |
tabname | Menentukan nama tabel yang ingin Anda hapus. | Ya |
Examples
Hapus statistik tabel yang ada. Contoh:
CALL DBMS_STATS.DELETE_TABLE_STATS('dbms_stats_schema', 'dbms_stats_test');Tanyakan statistik tabel setelah statistik tabel dihapus. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname = 'dbms_stats_schema.dbms_stats_test';DBMS_STATS.DELETE_COLUMN_STATS
Fungsi ini digunakan untuk menghapus statistik kolom yang ada.
Syntax
DBMS_STATS.DELETE_COLUMN_STATS (
ownname VARCHAR2,
tabname VARCHAR2,
attname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari kolom yang ingin Anda hapus. | Ya |
tabname | Menentukan nama tabel yang berisi kolom yang ingin Anda hapus. | Ya |
attname | Menentukan nama kolom yang ingin Anda hapus. | Ya |
Examples
Hapus statistik kolom yang ada. Contoh:
CALL DBMS_STATS.DELETE_COLUMN_STATS('dbms_stats_schema', 'dbms_stats_test', 'id');DBMS_STATS.DELETE_SCHEMA_STATS
Fungsi ini digunakan untuk menghapus statistik skema yang ada.
Syntax
DBMS_STATS.DELETE_SCHEMA_STATS (
ownname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan nama skema yang ingin Anda hapus. | Ya |
Examples
Hapus statistik skema yang ada. Contoh:
CALL DBMS_STATS.DELETE_SCHEMA_STATS('dbms_stats_schema');Tanyakan statistik skema setelah statistik skema dihapus. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname LIKE 'dbms_stats_schema.%';DBMS_STATS.DELETE_INDEX_STATS
Fungsi ini digunakan untuk menghapus statistik indeks yang ada.
Syntax
DBMS_STATS.DELETE_INDEX_STATS (
ownname VARCHAR2,
indname VARCHAR2
);Parameters
Parameter | Deskripsi | Diperlukan |
ownname | Menentukan skema dari indeks yang ingin Anda hapus. | Ya |
indname | Menentukan nama indeks yang ingin Anda hapus. | Ya |
Examples
Hapus statistik indeks yang ada. Contoh:
CALL DBMS_STATS.DELETE_INDEX_STATS('dbms_stats_schema', 'dbms_stats_index');Tanyakan statistik indeks setelah statistik indeks dihapus. Contoh:
SELECT count(*) FROM polar_dbms_stats.relation_stats_backup WHERE relname LIKE 'dbms_stats_schema.%';