简介
- 奇虎360的一个mysql数据库中间层项目
- 在mysql官方推出的mysql-proxy0.8.2的基础上改的
- 基于服务端的中间件
- git地址
相比于mysql-proxy,Altas有哪些优势:
- 主流程中的Lua脚本用C重写
- 网络模型,线程模型重写
- 实现了“真正意义”上的连接池,真正连接复用
- 优化了锁机制,性能提高数十倍
- 官方mysql-proxy主库宕机从库亦不可用,Atlas优化为可读不可写
- ip过滤
- 分表支持
- dba可平滑上下线db
- 自动摘除宕机db
- ...
分表功能
为了支持分表,需要增加分表设置
tables = $db_name
.$table_name
.$partition_column_name
.$table_count
例如
tables = waka:sku:id:100
数据库名叫waka
表名叫sku
分表字段叫id
总共分为100张表
这100张子表需要用户手动逐个建立的,sku_0, sku_1, sku_2, … sku_99,并且所有的子表必须在一个数据库里。
Atlas支持select, delete, update, insert, replace操作,它会根据$partition_column_name 的值来对表的个数进行取模,以定位到sql请求要落到哪个子表。
需要注意的是,sql语句必须带上分表id作为查询条件,如果不带上id,则会提示stu表不存在。
网友评论