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

Sharding dan pembuatan ID sebagai instagram

Ini setara dengan postgres

Tentukan TABLE_SCHEMA dan MASKTABLE di bawah

Saya membuat MASKTABLE dengan entri pertama dummy

DELIMITER $$
CREATE OR REPLACE FUNCTION generate_next_id() RETURNS bigint NOT DETERMINISTIC
MAIN: BEGIN
DECLARE our_epoch bigint;
DECLARE seq_id bigint;
DECLARE now_millis bigint;
DECLARE shard_id int;
DECLARE param bigint ;
SET @our_epoch = 1568873367231;
SET @shard_id = 1;
SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = "SCHEMANAME" AND TABLE_NAME = "MASKTABLE" into @seq_id;
SELECT FLOOR(UNIX_TIMESTAMP()) * 1000 into @now_millis;
SELECT (@now_millis - @our_epoch) << 23 into @param;
SELECT @param | (@shard_id <<10) into @param; 
select @param | (@seq_id) into @param; 
RETURN @param;
END MAIN;$$ 
DELIMITER ;

Penggunaan

select generate_next_id()

Anda dapat menggunakannya di pemicu seperti

CREATE TRIGGER trigger_name
BEFORE INSERT ON TableName 
FOR EACH ROW
SET new.id = generate_next_id();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah pencarian dengan MySQL

  2. MySqlConversionException saat mengakses bidang DateTime dari DataReader

  3. Bagaimana cara memperbaiki com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:Tidak ada operasi yang diizinkan setelah koneksi ditutup. pengecualian?

  4. Hapus data dari semua tabel di MYSQL

  5. Pengguna dan kata sandi mysql yang di-hardcode di Node.js