

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Mengidentifikasi tabel dengan data miring atau baris yang tidak disortir
<a name="identify-tables-with-data-skew-or-unsorted-rows"></a>

Kueri berikut mengidentifikasi tabel yang memiliki distribusi data yang tidak merata (data miring) atau persentase tinggi baris yang tidak disortir.

`skew`Nilai rendah menunjukkan bahwa data tabel didistribusikan dengan benar. Jika tabel memiliki `skew` nilai 4,00 atau lebih tinggi, pertimbangkan untuk memodifikasi gaya distribusi datanya. Untuk informasi selengkapnya, lihat [Distribusi data suboptimal](query-performance-improvement-opportunities.md#suboptimal-data-distribution).

Jika tabel memiliki `pct_unsorted` nilai lebih besar dari 20 persen, pertimbangkan untuk menjalankan [VAKUM](r_VACUUM_command.md) perintah. Untuk informasi selengkapnya, lihat [Baris yang tidak disortir atau disortir](query-performance-improvement-opportunities.md#unsorted-or-mis-sorted-rows).

Juga tinjau `mbytes` dan `pct_of_total` nilai untuk setiap tabel. Kolom ini mengidentifikasi ukuran tabel dan berapa persentase ruang disk mentah yang dikonsumsi tabel. Ruang disk mentah mencakup ruang yang dicadangkan oleh Amazon Redshift untuk penggunaan internal, sehingga lebih besar dari kapasitas disk nominal, yang merupakan jumlah ruang disk yang tersedia untuk pengguna. Gunakan informasi ini untuk memverifikasi bahwa Anda memiliki ruang disk kosong sama dengan setidaknya 2,5 kali ukuran tabel terbesar Anda. Memiliki ruang ini memungkinkan sistem untuk menulis hasil perantara ke disk saat memproses kueri kompleks. 

```
select trim(pgn.nspname) as schema, 
trim(a.name) as table, id as tableid, 
decode(pgc.reldiststyle,0, 'even',1,det.distkey ,8,'all') as distkey, dist_ratio.ratio::decimal(10,4) as skew, 
det.head_sort as "sortkey", 
det.n_sortkeys as "#sks", b.mbytes,  
decode(b.mbytes,0,0,((b.mbytes/part.total::decimal)*100)::decimal(5,2)) as pct_of_total, 
decode(det.max_enc,0,'n','y') as enc, a.rows, 
decode( det.n_sortkeys, 0, null, a.unsorted_rows ) as unsorted_rows , 
decode( det.n_sortkeys, 0, null, decode( a.rows,0,0, (a.unsorted_rows::decimal(32)/a.rows)*100) )::decimal(5,2) as pct_unsorted 
from (select db_id, id, name, sum(rows) as rows, 
sum(rows)-sum(sorted_rows) as unsorted_rows 
from stv_tbl_perm a 
group by db_id, id, name) as a 
join pg_class as pgc on pgc.oid = a.id
join pg_namespace as pgn on pgn.oid = pgc.relnamespace
left outer join (select tbl, count(*) as mbytes 
from stv_blocklist group by tbl) b on a.id=b.tbl
inner join (select attrelid, 
min(case attisdistkey when 't' then attname else null end) as "distkey",
min(case attsortkeyord when 1 then attname  else null end ) as head_sort , 
max(attsortkeyord) as n_sortkeys, 
max(attencodingtype) as max_enc 
from pg_attribute group by 1) as det 
on det.attrelid = a.id
inner join ( select tbl, max(mbytes)::decimal(32)/min(mbytes) as ratio 
from (select tbl, trim(name) as name, slice, count(*) as mbytes
from svv_diskusage group by tbl, name, slice ) 
group by tbl, name ) as dist_ratio on a.id = dist_ratio.tbl
join ( select sum(capacity) as  total
from stv_partitions where part_begin=0 ) as part on 1=1
where mbytes is not null 
order by  mbytes desc;
```