LindormTable menggunakan struktur penyimpanan Log-Structured Merge-Tree (LSM-Tree). Mendapatkan jumlah baris yang tepat memerlukan pemindaian tabel penuh—semakin besar tabel, semakin lama operasi tersebut berlangsung. Hindari menjalankan operasi COUNT secara berkala.
Lindorm
Perbedaan antara jumlah baris tepat dan perkiraan jumlah baris pada tabel lebar Lindorm adalah sebagai berikut:
Exact row count | Estimated row count | |
Metode statistik | Memindai seluruh tabel untuk mendapatkan jumlah baris yang akurat. | Mengambil metadata langsung di tingkat file, sehingga hasilnya mungkin berbeda dari ukuran tabel sebenarnya. |
Kinerja statistik | Waktu penyelesaian lama, dengan beban tambahan tinggi saat dieksekusi secara konkuren. | Waktu penyelesaian singkat, dengan beban tambahan rendah saat dieksekusi secara konkuren. |
Skenario penggunaan | Skenario seperti verifikasi data sebelum dan sesudah migrasi data. | Skenario di mana halaman aplikasi menampilkan tren perubahan ukuran tabel. |
Metode untuk mendapatkan jumlah baris tepat dari tabel lebar
Anda dapat menggunakan metode berikut untuk mendapatkan jumlah baris tepat dari tabel lebar. Pilih metode yang sesuai dengan skenario bisnis Anda:
Menggunakan Lindorm SQL untuk menghitung baris umumnya lebih cepat dibandingkan menggunakan HBase RowCounter karena Lindorm secara otomatis mendistribusikan dan memproses operasi COUNT secara paralel (eksekusi multi-threaded), sedangkan HBase Shell menghitung secara single-threaded. Namun demikian, operasi COUNT tetap harus memindai seluruh tabel, dan timeout default-nya adalah 120 detik. Operasi akan gagal jika melebihi batas waktu tersebut. Untuk tabel besar, Anda dapat meningkatkan timeout menggunakan HINT dalam SQL. Kecepatan pemrosesan Lindorm SQL dapat mencapai ratusan ribu baris per node per detik. Karena operasi COUNT bersifat intensif CPU, hindari eksekusinya selama jam sibuk bisnis.
Dapatkan jumlah baris tepat dari tabel lebar menggunakan SQL
Anda dapat menggunakan Lindorm-cli, Gunakan klien MySQL untuk terhubung ke dan menggunakan LindormTable, atau JDBC untuk terhubung ke Lindorm dan menjalankan Pernyataan SQL.
Sebagai contoh, Anda dapat menjalankan Pernyataan SQL berikut untuk menghitung jumlah baris dari table_name dan mengatur timeout eksekusi menjadi 5 menit.
SELECT /*+ _l_operation_timeout_(300000) */ COUNT(*) FROM table_name;Hasilnya adalah sebagai berikut:
+--------+
| EXPR$0 |
+--------+
| 160000 |
+--------+Menghitung jumlah baris tepat dari sebuah tabel memerlukan pemindaian tabel penuh. Lakukan operasi ini dengan hati-hati. Jika volume data melebihi satu juta baris, kami menyarankan Anda:
Gunakan indeks pencarian untuk akselerasi: Kueri data dalam tabel lebar menggunakan indeks pencarian.
1843_v1_4_0.xdita">.
Tambahkan
_l_operation_timeoutHINT untuk meningkatkan timeout pernyataan: HINT.dari tabel lebar menggunakan HBase Shell
Terhubung ke LindormTable menggunakan HBase Shell. Untuk informasi lebih lanjut, lihat Akses LindormTable menggunakan Lindorm Shell.
Gunakan perintah COUNT (Disarankan)
Perintah COUNT di HBase Shell memberikan jumlah baris tepat dari tabel HBase dengan memindai semua data tabel secara batch dan menghitungnya. Oleh karena itu, kami menyarankan Anda menjalankan perintah COUNT dari client ECS dalam VPC yang sama. Jika dijalankan melalui Internet, utilisasi jaringan akan tinggi dan mengurangi efisiensi statistik. Bergantung pada struktur tabel, kecepatan pemindaian bervariasi. Kecepatan pemindaian tabel penuh menggunakan perintah COUNT bisa kurang dari 100.000 baris per detik. Jalankan pernyataan berikut untuk menghitung total baris tabel:
count 'table_name'Hasilnya adalah sebagai berikut:

Gunakan Plugin HBase RowCounter untuk akselerasi
Perintah count di HBase Shell dapat memperoleh jumlah baris tepat dari tabel lebar, tetapi kecepatannya lambat untuk tabel besar. Plugin RowCounter menjalankan tugas MR pseudo-distributed lokal untuk melakukan operasi COUNT. Secara default, plugin ini berjalan dalam satu thread, sehingga kecepatan statistiknya mirip dengan perintah COUNT di HBase Shell. Untuk meningkatkan kecepatan statistik, Anda dapat menentukan
mapreduce.local.map.tasks.maximumguna menambah jumlah thread. Menjalankannya secara paralel dengan beberapa thread sangat mempercepat proses statistik.Jumlah thread harus kurang dari atau sama dengan jumlah region dalam tabel.
harus kurang dari atau sama dengan jumlah region dalam tabel.haruskurang dari atau sama dengan jumlah region dalam tabel.
Menambah jumlah thread dapat menyebabkan beban kluster tinggi dan memengaruhi layanan online. Atur jumlah tersebut berdasarkan kebutuhan bisnis.
dapat menyebabkan beban kluster tinggi dan memengaruhi layanan online. Atur jumlah tersebut berdasarkan kebutuhan bisnis.
Sebagai contoh, jalankan perintah berikut di HBase Shell untuk menggunakan Plugin RowCounter guna menghitung jumlah baris dari tabel lebar Lindorm.
Jalankan perintah berikut di HBase Shell untuk menghitung jumlah baris dari tabel lebar Lindorm.
Gunakan Plugin RowCounter untuk menghitung total baris dari tabel target (table).
total baris dari tabel target (table).
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter "table_name"Gunakan Plugin RowCounter untuk menghitung total baris dari tabel (table) dengan 16 thread konkuren.
baris tabel (tabel) dengan 16 thread konkuren.
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter -Dmapreduce.local.map.tasks.maximum=16 "table_name"Gunakan Plugin RowCounter untuk menghitung total baris dari tabel target (table) dalam namespace ns.
s dari tabel target (table) di namespace ns.
./alihbase-2.0.18/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter "ns:table_name"Hasil statistik dari Plugin RowCounter disimpan dalam file
hbase.logdi direktori Log, seperti yang ditunjukkan pada gambar berikut.
Metode untuk mendapatkan perkiraan jumlah baris dari tabel lebar
Anda dapat menggunakan metode berikut untuk mendapatkan perkiraan jumlah baris dari tabel lebar:
Dapatkan perkiraan jumlah baris dari tabel lebar menggunakan SQL
Lihat perkiraan jumlah baris tabel di sistem manajemen kluster
Dapatkan perkiraan jumlah baris dari tabel lebar menggunakan SQL
Berbeda dengan pernyataan SELECT yang digunakan untuk mendapatkan jumlah baris tepat, perkiraan jumlah baris dapat diperoleh menggunakan pernyataan SHOW berikut:
Fitur ini memerlukan LindormTable versi 2.8.2.6 atau lebih baru dan Lindorm SQL versi 2.8.2.6 atau lebih baru.
SHOW ESTIMATED ROWS FROM table_name;Hasil berikut dikembalikan:
+---------------------+
| ESTIMATED_ROW_COUNT |
+---------------------+
| 15000 |
+---------------------+Lihat perkiraan jumlah baris tabel di sistem manajemen kluster
Pertama, Masuk ke sistem manajemen kluster.
Di sistem manajemen kluster Lindorm, Anda dapat melihat perkiraan kasar jumlah baris tabel pada halaman Overview. Nilai perkiraan ini dihitung dengan menjumlahkan metadata jumlah baris dari file data. Jika pengguna melakukan operasi update atau delete, baris data yang sama mungkin tersebar di beberapa file. Selain itu, metadata jumlah baris suatu file dikumpulkan saat file tersebut dibuat. Jika pengguna menggunakan fitur TTL, sebagian data dalam file mungkin telah kedaluwarsa, yang dapat menyebabkan perkiraan jumlah baris berbeda dari jumlah baris sebenarnya.
Di sistem manajemen kluster Lindorm, klik Overview di panel navigasi kiri. Di area Current IDC, temukan tabel target. Jumlah baris ditampilkan di kolom Rows.
Jika tabel memiliki data tetapi perkiraan jumlah barisnya 0, versi minor mesin tabel lebar Lindorm terlalu rendah. Lakukan upgrade versi minor. Untuk informasi cara upgrade, lihat Upgrade versi mesin minor instans Lindorm.