手动数据库分库分片策略

手动数据库分片

 

// 手动分片逻辑示例
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

posted @ 2025-10-06 17:22  calochCN  阅读(5)  评论(0)    收藏  举报