数据库分片
数据库分片通常也被称为分库,散库等。 当我们在某个库中,把某张大表拆分成多个小表后还不能满足性能要求,这时我们需要把一部分拆分的表挪到另外一个库中,以提高sql执行效率。
先来看一段mango框架中数据库分片的代码:
@DB()
@Sharding(databaseShardingStrategy = DatabaseShardingOrderDao.OrderDatabaseShardingStrategy.class)
public interface DatabaseShardingOrderDao {
@SQL("insert into t_order(id, uid, price, status) values(:id, :uid, :price, :status)")
public void addOrder(@DatabaseShardingBy("uid") Order order);
@SQL("select id, uid, price, status from t_order where uid = :1")
public List getOrdersByUid(@DatabaseShardingBy int uid);
class OrderDatabaseShardingStrategy implements DatabaseShardingStrategy {
@Override
public String getDatabase(Integer shardingParameter) {
return shardingParameter < 1000 ? "db1" : "db2