All Products
Search
Document Center

PolarDB:HASH

Last Updated:Jul 02, 2025

Topik ini menjelaskan penggunaan fungsi HASH.

Catatan

Fungsi UNI_HASH melakukan operasi modulo sederhana. Output dari fungsi UNI_HASH akan terdistribusi secara merata hanya jika nilai dalam kolom kunci partisi juga terdistribusi secara merata.

Batasan

Kunci partisi harus berupa bilangan bulat atau string.

Metode routing

  • Jika kunci partisi yang berbeda digunakan untuk mengeksekusi fungsi HASH pada database shard dan tabel shard, bagi nilai kunci shard database dengan jumlah shard database dan temukan sisanya. Jika nilai kuncinya adalah string, string tersebut diubah menjadi nilai hash terlebih dahulu sebelum digunakan dalam perhitungan rute. Sebagai contoh, HASH(8) setara dengan 8 % D, di mana D menunjukkan jumlah shard database. HASH("ABC") setara dengan hashcode("ABC").abs() % D.
  • Jika kunci partisi yang sama digunakan untuk mengeksekusi fungsi HASH pada database shard dan tabel shard, bagi nilai kunci partisi dengan jumlah total tabel shard dan temukan sisanya. Misalnya, dua shard database dibuat, masing-masing shard database berisi empat tabel shard, di mana tabel shard 0 hingga 3 disimpan di shard database 0, dan tabel shard 4 hingga 7 disimpan di shard database 1. Berdasarkan metode routing ini, nilai kunci 15 didistribusikan ke tabel shard 7 di shard database 1. Persamaannya adalah ((15 % (2*4) = 7)).

Skenario

Fungsi HASH dapat digunakan dalam skenario berikut:

  • Mempartisi database berdasarkan ID pengguna atau ID pesanan.
  • Menggunakan string sebagai kunci partisi.

Contoh

Misalnya, Anda ingin mengeksekusi fungsi HASH untuk membuat tabel non-partisi di shard database berdasarkan kolom ID. Anda dapat mengeksekusi pernyataan Data Definition Language (DDL) berikut untuk membuat tabel:

create table test_hash_tb (
    id int,
    name varchar(30) DEFAULT NULL,  
    create_time datetime DEFAULT NULL,
    primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 dbpartition by HASH(ID);