CTAScatatan penggunaan - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CTAScatatan penggunaan

Batas

Amazon Redshift memberlakukan kuota jumlah tabel per cluster menurut jenis node.

Jumlah maksimum karakter untuk nama tabel adalah 127.

Jumlah maksimum kolom yang dapat Anda tentukan dalam satu tabel adalah 1.600.

Warisan atribut kolom dan tabel

CREATETABLETabel AS (CTAS) tidak mewarisi batasan, kolom identitas, nilai kolom default, atau kunci utama dari tabel tempat mereka dibuat.

Anda tidak dapat menentukan pengkodean kompresi kolom untuk CTAS tabel. Amazon Redshift secara otomatis menetapkan pengkodean kompresi sebagai berikut:

  • Kolom yang didefinisikan sebagai kunci pengurutan diberi RAW kompresi.

  • Kolom yang didefinisikan sebagai BOOLEANREAL, DOUBLEPRECISION,,GEOMETRY, atau tipe GEOGRAPHY data diberi RAW kompresi.

  • Kolom yang didefinisikan sebagai SMALLINTINTEGER,BIGINT,DECIMAL,,DATE,TIME,TIMETZ,TIMESTAMP, atau TIMESTAMPTZ diberi AZ64 kompresi.

  • Kolom yang didefinisikan sebagaiCHAR,VARCHAR, atau VARBYTE diberi LZO kompresi.

Untuk informasi selengkapnya, silakan lihat Pengkodean kompresi dan Jenis data.

Untuk secara eksplisit menetapkan pengkodean kolom, gunakan. CREATE TABLE

CTASmenentukan gaya distribusi dan mengurutkan kunci untuk tabel baru berdasarkan rencana kueri untuk SELECT klausa.

Untuk kueri kompleks, seperti kueri yang menyertakan gabungan, agregasi, klausa urutan demi klausa, atau klausa batas, CTAS lakukan upaya terbaik untuk memilih gaya distribusi optimal dan kunci pengurutan berdasarkan rencana kueri.

catatan

Untuk kinerja terbaik dengan kumpulan data besar atau kueri kompleks, kami merekomendasikan pengujian menggunakan kumpulan data tipikal.

Anda sering dapat memprediksi kunci distribusi dan kunci sortir mana yang CTAS dipilih dengan memeriksa rencana kueri untuk melihat kolom mana, jika ada, yang dipilih pengoptimal kueri untuk menyortir dan mendistribusikan data. Jika node atas dari rencana kueri adalah pemindaian berurutan sederhana dari satu tabel (XN Seq Scan), maka CTAS umumnya menggunakan gaya distribusi tabel sumber dan kunci pengurutan. Jika node teratas dari rencana kueri adalah pemindaian sekuensial lainnya (seperti XN Limit, XN Sort, XN HashAggregate, dan sebagainya), CTAS lakukan upaya terbaik untuk memilih gaya distribusi optimal dan kunci sortir berdasarkan rencana kueri.

Misalnya, Anda membuat lima tabel menggunakan jenis SELECT klausa berikut:

  • Pernyataan pilih sederhana

  • Klausul batas

  • Pesanan dengan klausa menggunakan LISTID

  • Pesanan dengan klausa menggunakan QTYSOLD

  • Fungsi SUM agregat dengan klausa grup demi klausa.

Contoh berikut menunjukkan rencana query untuk setiap CTAS pernyataan.

explain create table sales1_simple as select listid, dateid, qtysold from sales; QUERY PLAN ---------------------------------------------------------------- XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=8) (1 row) explain create table sales2_limit as select listid, dateid, qtysold from sales limit 100; QUERY PLAN ---------------------------------------------------------------------- XN Limit (cost=0.00..1.00 rows=100 width=8) -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=8) (2 rows) explain create table sales3_orderbylistid as select listid, dateid, qtysold from sales order by listid; QUERY PLAN ------------------------------------------------------------------------ XN Sort (cost=1000000016724.67..1000000017155.81 rows=172456 width=8) Sort Key: listid -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=8) (3 rows) explain create table sales4_orderbyqty as select listid, dateid, qtysold from sales order by qtysold; QUERY PLAN ------------------------------------------------------------------------ XN Sort (cost=1000000016724.67..1000000017155.81 rows=172456 width=8) Sort Key: qtysold -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=8) (3 rows) explain create table sales5_groupby as select listid, dateid, sum(qtysold) from sales group by listid, dateid; QUERY PLAN ---------------------------------------------------------------------- XN HashAggregate (cost=3017.98..3226.75 rows=83509 width=8) -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=8) (2 rows)

Untuk melihat kunci distribusi dan kunci sortir untuk setiap tabel, kueri tabel katalog DEF sistem TABLE PG_ _, seperti yang ditunjukkan berikut.

select * from pg_table_def where tablename like 'sales%'; tablename | column | distkey | sortkey ----------------------+------------+---------+--------- sales | salesid | f | 0 sales | listid | t | 0 sales | sellerid | f | 0 sales | buyerid | f | 0 sales | eventid | f | 0 sales | dateid | f | 1 sales | qtysold | f | 0 sales | pricepaid | f | 0 sales | commission | f | 0 sales | saletime | f | 0 sales1_simple | listid | t | 0 sales1_simple | dateid | f | 1 sales1_simple | qtysold | f | 0 sales2_limit | listid | f | 0 sales2_limit | dateid | f | 0 sales2_limit | qtysold | f | 0 sales3_orderbylistid | listid | t | 1 sales3_orderbylistid | dateid | f | 0 sales3_orderbylistid | qtysold | f | 0 sales4_orderbyqty | listid | t | 0 sales4_orderbyqty | dateid | f | 0 sales4_orderbyqty | qtysold | f | 1 sales5_groupby | listid | f | 0 sales5_groupby | dateid | f | 0 sales5_groupby | sum | f | 0

Tabel berikut merangkum hasilnya. Untuk kesederhanaan, kami menghilangkan detail biaya, baris, dan lebar dari rencana penjelasan.

Tabel

CTASSELECTpernyataan

Jelaskan rencanakan node atas

Kunci dist

Sortir kunci

S1_ SIMPLE

select listid, dateid, qtysold from sales

XN Seq Scan on sales ...

LISTID DATEID
S2_ LIMIT

select listid, dateid, qtysold from sales limit 100

XN Limit ...

Tidak ada (EVEN) Tidak ada
S3_ ORDER _OLEH_ LISTID

select listid, dateid, qtysold from sales order by listid

XN Sort ...

Sort Key: listid

LISTID LISTID
S4_ ORDER _OLEH_ QTY

select listid, dateid, qtysold from sales order by qtysold

XN Sort ...

Sort Key: qtysold

LISTID QTYSOLD
S5_ _OLEH GROUP

select listid, dateid, sum(qtysold) from sales group by listid, dateid

XN HashAggregate ...

Tidak ada (EVEN) Tidak ada

Anda dapat secara eksplisit menentukan gaya distribusi dan mengurutkan kunci dalam pernyataan. CTAS Misalnya, pernyataan berikut membuat tabel menggunakan EVEN distribusi dan menentukan SALESID sebagai kunci pengurutan.

create table sales_disteven diststyle even sortkey (salesid) as select eventid, venueid, dateid, eventname from event;

Pengkodean kompresi

ENCODEAUTOdigunakan sebagai default untuk tabel. Amazon Redshift secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel.

Distribusi data yang masuk

Ketika skema distribusi hash dari data yang masuk cocok dengan tabel target, tidak ada distribusi fisik data yang sebenarnya diperlukan ketika data dimuat. Misalnya, jika kunci distribusi diatur untuk tabel baru dan data dimasukkan dari tabel lain yang didistribusikan pada kolom kunci yang sama, data dimuat di tempat, menggunakan node dan irisan yang sama. Namun, jika tabel sumber dan target disetel ke EVEN distribusi, data didistribusikan kembali ke dalam tabel target.

ANALYZEOperasi otomatis

Amazon Redshift secara otomatis menganalisis tabel yang Anda buat dengan perintah. CTAS Anda tidak perlu menjalankan ANALYZE perintah pada tabel ini saat pertama kali dibuat. Jika Anda memodifikasinya, Anda harus menganalisisnya dengan cara yang sama seperti tabel lainnya.