Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah Mysql UUID_SHORT() sebanding dengan UUID()

uuid_short() menghasilkan konglomerasi bitwise dari ID server, komponen waktu yang cukup statis, dan bilangan bulat 24 bit yang meningkat secara berurutan. Bit-bit ini dimasukkan ke dalam bilangan bulat 8 byte. Komponen waktu didasarkan pada waktu boot server.

uuid() menghasilkan string hex yang mewakili 16 byte versi1 UUID. UUID versi 1 adalah konglomerasi bitwise dari ID server, stempel waktu saat ini, beberapa byte yang ikut bermain jika Anda membuat ID dengan kecepatan tinggi, dan beberapa bit utilitas.

Untuk menjawab pertanyaan Anda:apakah uuid_short memberikan keunikan ruang dan waktu yang menyaingi uuid ? Jawabannya adalah tidak. Contoh kasus, ID server dalam uuid_short hanya satu byte. Jadi jika Anda memiliki 256 server atau lebih, setidaknya beberapa di antaranya akan memiliki id node yang sama, yang berarti Anda kehilangan keunikan ruang. Sebagai perbandingan, ID server dalam UUID versi 1 panjangnya 6 byte, secara efektif menghilangkan kemungkinan duplikat untuk semua kecuali kumpulan server perusahaan terbesar :)

Pertanyaan yang lebih baik adalah apakah uuid_short cukup baik. Anda dapat melihat tabrakan ID jika Anda :

  1. Hasilkan lebih dari 16 juta IDS dari server yang sama dalam waktu singkat. ***
  2. Boot server dengan ID server yang sama pada waktu yang sama persis, dan bagikan data di antara mereka.
  3. Bermain dengan jam sistem lalu reboot server Anda.

Masalah kedua tampaknya tidak mungkin bagi kebanyakan orang, tetapi yang pertama patut diselidiki sebelum Anda berkomitmen untuk membuat uuid_short dasar kunci Anda.

*** Berdasarkan dokumen mysql untuk uuid_short , sepertinya Anda akan melihat tabrakan jika Anda membuat lebih dari 16 juta ID selama waktu aktif satu server. Tapi itu akan konyol. Dokumen mysql selanjutnya mengatakan bahwa Anda baik-baik saja selama Anda tidak menghasilkan 16 juta ID per detik. Itu menyiratkan bahwa mereka harus menabrak beberapa bit dalam stempel waktu jika Anda menghabiskan 16 juta ID berurutan. Saya belum menguji ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara mendapatkan laporan kesalahan terperinci ketika skrip php-mysql gagal?

  2. Transaksi kereta api

  3. Pembaruan bersamaan MySQL

  4. font devnagri (hindi) tidak disimpan di mysql

  5. Bagaimana memilih dari nama tabel dinamis