全部产品
Search
文档中心

AnalyticDB:Tipe Data Dasar

更新时间:Nov 10, 2025

Topik ini menjelaskan tipe data yang didukung oleh AnalyticDB for MySQL, perbedaan mereka dari tipe data MySQL, serta aturan konversi tipe implisit.

Tipe data dasar yang didukung oleh AnalyticDB for MySQL

Kategori

Tipe Data

Deskripsi

Perbandingan dengan Tipe Data MySQL

Numerik

BOOLEAN

Nilai valid: 0 dan 1. Ukuran nilai BOOLEAN adalah 1 bit.

  • 0: Salah.

  • 1: Benar.

Tidak ada perbedaan.

TINYINT

Nilai valid: -128 hingga 127. Ukuran nilai TINYINT adalah 1 byte.

Tidak ada perbedaan.

SMALLINT

Nilai valid: -32768 hingga 32767. Ukuran nilai SMALLINT adalah 2 byte.

Tidak ada perbedaan.

INT atau INTEGER

Nilai valid: -2147483648 hingga 2147483647. Ukuran nilai INT atau INTEGER adalah 4 byte.

Tipe INT dalam AnalyticDB for MySQL sesuai dengan tipe INT atau MEDIUMINT dalam MySQL.

BIGINT

Nilai valid: -9223372036854775808 hingga 9223372036854775807. Ukuran nilai BIGINT adalah 8 byte.

Tidak ada perbedaan.

FLOAT

Nilai valid: -3.402823466E+38 hingga -1.175494351E-38, 0, dan 1.175494351E-38 hingga 3.402823466E+38. Tipe FLOAT mengikuti standar IEEE. Ukuran nilai FLOAT adalah 4 byte.

Tidak ada perbedaan.

DOUBLE

Nilai valid: -1.7976931348623157E+308 hingga -2.2250738585072014E-308, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308. Tipe DOUBLE mengikuti standar IEEE. Ukuran nilai DOUBLE adalah 8 byte.

Tidak ada perbedaan.

DECIMAL(m,d) atau NUMERIC

m menunjukkan presisi maksimum, dan nilainya berkisar dari 1 hingga 38. d menunjukkan skala desimal. Nilai d harus kurang dari atau sama dengan nilai m.

  • MySQL mendukung presisi maksimum 65.

  • AnalyticDB for MySQL mendukung presisi maksimum sebesar 38.

Untuk menyesuaikan presisi maksimum, hubungi Dukungan Teknis.

String

VARCHAR

Nilai VARCHAR dapat mencapai ukuran hingga 16 MB. Anda tidak perlu menentukan panjang saat menggunakan VARCHAR.

Catatan

Jika Anda menentukan panjang, seperti VARCHAR(255), angka dalam tanda kurung hanya digunakan untuk kompatibilitas sintaksis. Panjang sebenarnya bervariasi berdasarkan ukuran data (hingga 16 MB) dan mungkin melebihi 255 karakter. Jangan melakukan validasi panjang dengan menggunakan panjang yang ditentukan.

Tipe VARCHAR dalam AnalyticDB for MySQL sesuai dengan tipe CHAR, VARCHAR, TEXT, MEDIUMTEXT, atau LONGTEXT dalam MySQL.

BINARY

Panjang penyimpanan karakter.

Tipe BINARY dalam AnalyticDB for MySQL sesuai dengan tipe BINARY, VARBINARY, atau BLOB dalam MySQL.

Waktu

DATE

Nilai valid: '0001-01-01' hingga '9999-12-31'. Format nilai DATE adalah 'YYYY-MM-DD' dengan ukuran 4 byte.

  • MySQL mendukung 0000-00-00.

  • AnalyticDB for MySQL memeriksa validitas nilai tipe waktu dan secara otomatis mengonversi nilai numerik yang tidak bermakna seperti 0000-00-00 menjadi NULL. Pastikan tanggal dan waktu sesuai dengan nilai aktual.

TIME

Nilai valid: '00:00:00' hingga '23:59:59'. Format nilai TIME adalah 'HH:MM:SS' dengan ukuran 8 byte.

  • MySQL mendukung presisi kustom.

  • AnalyticDB for MySQL mendukung presisi tingkat milidetik, hingga tiga tempat desimal.

DATETIME

Nilai valid: '0001-01-01 00:00:00.000' hingga '9999-12-31 23:59:59.999'. Format nilai DATETIME adalah 'YYYY-MM-DD HH:MM:SS'. Ukurannya adalah 8 byte dan dalam UTC.

Penting

Secara default, DATETIME menggunakan waktu UTC. Anda tidak dapat mengubah zona waktu untuk nilai DATETIME.

  • MySQL mendukung 0000-00-00 dan presisi kustom.

  • AnalyticDB for MySQL memeriksa validitas nilai tipe waktu dan secara otomatis mengonversi nilai numerik yang tidak bermakna seperti 0000-00-00 menjadi NULL. Pastikan tanggal dan waktu sesuai dengan nilai aktual.

TIMESTAMP

Nilai valid: '0100-01-01 00:00:00.000' hingga '9999-12-31 23:59:59.999'. Format nilai TIMESTAMP adalah 'YYYY-MM-DD HH:MM:SS'. Ukurannya adalah 8 byte dan dalam UTC.

Catatan

Secara default, TIMESTAMP menggunakan zona waktu sistem. Anda dapat menentukan zona waktu untuk setiap sesi.

  • MySQL mendukung presisi kustom.

  • AnalyticDB for MySQL mendukung presisi tingkat milidetik, hingga tiga tempat desimal.

Spatial

POINT

Koordinat geografis x dan y.

Tidak ada perbedaan.

Konversi Tipe Implisit

Konversi tipe implisit mengacu pada konversi tipe otomatis yang dilakukan oleh AnalyticDB for MySQL berdasarkan konteks dan aturan konversi tipe saat Anda menjalankan operasi kueri SQL.

Catatan
  • Aturan konversi tipe implisit dari AnalyticDB for MySQL mencakup tipe data dasar yang umum. Tipe data kompleks tidak mendukung konversi tipe implisit.

  • Jika aturan konversi tipe implisit default tidak memenuhi persyaratan bisnis Anda, Anda dapat menggunakan konversi tipe eksplisit.

Aturan Konversi Proyeksi

Ketika kolom dalam pernyataan SELECT dibandingkan dengan konstanta, tipe pengembalian akan dikonversi secara implisit ke tipe data yang ditampilkan dalam tabel berikut. Jika konversi tipe implisit tidak didukung, terjadi kesalahan.

Kolom/Konstanta

VARCHAR

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

VARCHAR

VARCHAR

BOOLEAN

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

BOOLEAN

BOOLEAN

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

Tidak didukung

DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

TINYINT

BIGINT

TINYINT

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

SMALLINT

BIGINT

SMALLINT

SMALLINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

INTEGER

BIGINT

INTEGER

INTEGER

INTEGER

INTEGER

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DECIMAL

Tidak didukung

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

TIME

TIME

Tidak didukung

Tidak didukung

Tidak didukung

BIGINT

BIGINT

Tidak didukung

DOUBLE

TIME

BIGINT

BIGINT

DATETIME

DATE

DATE

Tidak didukung

Tidak didukung

Tidak didukung

BIGINT

BIGINT

Tidak didukung

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

TIMESTAMP

TIMESTAMP

Tidak didukung

Tidak didukung

Tidak didukung

BIGINT

BIGINT

Tidak didukung

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

DATETIME

DATETIME

Tidak didukung

Tidak didukung

Tidak didukung

BIGINT

BIGINT

Tidak didukung

DOUBLE

DATETIME

DATETIME

DATETIME

DATETIME

Aturan Konversi Filter

Saat kolom dalam klausa WHERE dibandingkan dengan konstanta, tipe pengembalian akan dikonversi secara implisit menjadi tipe data yang ditampilkan dalam tabel berikut. Jika konversi tipe implisit tidak didukung, terjadi kesalahan.

Jika tipe data berbeda, konversi tipe implisit dapat menyebabkan kegagalan pushdown, memicu pemindaian tabel penuh yang secara signifikan mengurangi kinerja kueri. Pushdown merujuk pada mendorong kondisi filter ke lapisan penyimpanan untuk penyaringan berbasis indeks. Ini mengurangi beban pemindaian data ketika tingkat filter tinggi, sehingga meningkatkan kinerja kueri.

Dalam tabel berikut, 1 sebelum tipe data pengembalian menunjukkan pushdown berhasil, dan 0 menunjukkan kegagalan pushdown.

Kolom/Konstanta

VARCHAR

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

REAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

VARCHAR

1 VARCHAR

0 BOOLEAN

0 BIGINT

0 BIGINT

0 BIGINT

0 BIGINT

0 DECIMAL

0 REAL

0 DOUBLE

0 TIME

0 DATE

0 TIMESTAMP

0 DATETIME

BOOLEAN

1 BOOLEAN

1 BOOLEAN

0 TINYINT

0 SMALLINT

0 INTEGER

0 BIGINT

Tidak didukung

0 REAL

0 DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

1 TINYINT

0 DECIMAL

0 REAL

0 DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

1 SMALLINT

0 DECIMAL

0 REAL

0 DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

1 INTEGER

0 DECIMAL

0 REAL

0 DOUBLE

1 INTEGER

1 INTEGER

INTEGER

INTEGER

BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

1 BIGINT

0 DECIMAL

0 REAL

0 DOUBLE

1 BIGINT

1 BIGINT

BIGINT

BIGINT

DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

1 DECIMAL

0 REAL

0 DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

1 REAL

0 DOUBLE

Tidak didukung

Tidak didukung

Tidak didukung

Tidak didukung

DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

1 DOUBLE

TIME

1 TIME

Tidak didukung

Tidak didukung

Tidak didukung

0 BIGINT

0 BIGINT

Tidak didukung

Tidak didukung

0 DOUBLE

1 TIME

0 BIGINT

0 BIGINT

0 DATETIME

DATE

1 DATE

Tidak didukung

Tidak didukung

Tidak didukung

0 BIGINT

0 BIGINT

Tidak didukung

Tidak didukung

0 DOUBLE

0 BIGINT

1 DATE

0 TIMESTAMP

0 DATETIME

TIMESTAMP

1 TIMESTAMP

Tidak didukung

Tidak didukung

Tidak didukung

0 BIGINT

0 BIGINT

Tidak didukung

Tidak didukung

0 DOUBLE

1 TIMESTAMP

1 TIMESTAMP

1 TIMESTAMP

1 TIMESTAMP

DATETIME

1 DATETIME

Tidak didukung

Tidak didukung

Tidak didukung

0 BIGINT

0 BIGINT

Tidak didukung

Tidak didukung

0 DOUBLE

1 DATETIME

1 DATETIME

1 DATETIME

1 DATETIME

Otimisasi konversi tipe paksa (ENFORCE_UNWRAP_CAST)

Optimasi konversi tipe paksa digunakan dalam sistem database untuk mengontrol konversi tipe. Ini menangani degradasi kinerja kueri dan masalah akurasi hasil yang disebabkan oleh konversi tipe implisit.

Metode Konfigurasi

Optimasi konversi tipe paksa mendukung dua metode konfigurasi. Anda dapat memilih salah satu berdasarkan kebutuhan bisnis Anda.

  • Konfigurasi Global

    Aktifkan optimasi dengan menyetel parameter global, yang berlaku untuk semua kueri.

    SET ADB_CONFIG ENFORCE_UNWRAP_CAST = true;
  • Konfigurasi Hint

    Sementara aktifkan optimasi untuk kueri tertentu tanpa memengaruhi kueri lainnya.

    /*+ ENFORCE_UNWRAP_CAST=true */

Contoh

Kolom col dalam tabel test bertipe VARCHAR dan berisi nilai '1', '1a', dan 'abc'. Jalankan pernyataan berikut:

SELECT col FROM test WHERE col = 1;

Hasilnya bervariasi berdasarkan status konfigurasi parameter enforce_unwrap_cast.

  • Status default dinonaktifkan (ENFORCE_UNWRAP_CAST=false): Sistem secara implisit mengonversi kolom VARCHAR menjadi tipe BIGINT untuk perbandingan. Dalam hal ini, '1' dan '1a' dipotong, dan bagian non-numerik dikonversi menjadi nilai numerik 1 untuk perbandingan. Dua hasil cocok, '1' dan '1a', dikembalikan. Karena konversi tipe implisit dilakukan pada nilai kolom, optimasi pushdown gagal dipicu, dan sistem perlu memindai seluruh tabel. Dalam hal ini, kinerja kueri menurun.

  • Status diaktifkan (ENFORCE_UNWRAP_CAST=true): Sistem mengonversi konstanta INTEGER menjadi tipe VARCHAR untuk perbandingan string. Dalam hal ini, hanya '1' yang cocok dengan konstanta 1, dan '1a' difilter karena ketidakcocokan string. Hanya satu hasil cocok, '1', yang dikembalikan. Kebijakan optimasi ini dapat mendorong logika perbandingan ke lapisan penyimpanan, yang secara efektif mengurangi jumlah data yang dipindai dan meningkatkan kinerja kueri.