手动数据库分库分片策略
手动数据库分片
// 手动分片逻辑示例 func getShardDB(userID int) *gorm.DB { dbIndex := userID % 4 dsn := fmt.Sprintf("user:pwd@tcp(db-%d:3306)/user_db_%d", dbIndex, dbIndex) db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{}) return db.Table(fmt.Sprintf("users_%d", userID/4%4)) }
插入操作使用集中式生成分片ID处理,如SNOWFLAKE雪片算法,生成非集中不自增ID
浙公网安备 33010602011771号