MySQL使用Amoeba作为Proxy时的注意事项


Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它因配置方便,语法书写规则等特点深得广大使用者的青睐,但在实际的使用过程中也有很多注意事项,本文我们就对其加以介绍,希望能够对您有所帮助。

 


与MySQL官方的MySQL Proxy相比,Amoeba配置是很方便的,它基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单。但它也不是完美无缺的,在实际使用中有很多需要注意的事项。接下来我们就来一一介绍Amoeba的一些注意事项。

Amoeba不支持事务

目前Amoeba不支持事务,任何有关事务的SQL语句都会被Amoeba屏蔽掉。如果必须使用事务,而且事务内的处理操作都可以路由到同一台MySQL上的话,可以考虑在存储过程中使用事务进行处理。另外,Amoeba将来有望支持事务。

Amoeba不支持跨库join和排序

跨库的join和排序非常消耗资源,会导致性能严重下降,Amoeba没有进行支持。

Insert语句必须指定表的列名

Amoeba是根据SQL语句进行解析的,如果SQL语句中没有切分规则中的关键字,那么Amoeba就不会按照规则进行水平切分。比如,按照城市ID进行数据水平切分时,如下语句不会被正确切分:

INSERT INTO tb_Shop VALUES (1,5,'店铺的名称','店铺的地址',1,'2011-07-30');

而如下语句则可以正确切分:

INSERT INTO tb_Shop(Shop_ID,ity_ID,ShopName,Address,ShopStatus,CreateTime) VALUES (1,5,'店铺的名称','店铺的地址',1,'2011-07-30');

也就是说,切分规则中的关键字City_ID必须要在SQL语句中出现。

Amoeba不支持分库分表。

Amoeba不支持分库分表,只能分MySQL实例。

Amoeba不支持大数据量的查询。

大数据量的查询非常消耗内存,Amoeba在进行大数据量查询时性能会非常差。当然,实际业务中需要进行大数据量查询的情况会非常少或者根本没必要实现这种情况。这里所谓的大数据量查询指的是一次查询结果超过十万行。

Amoeba需要更严格的SQL语句规范

From 关键字后面如果不是子查询,一律不能带括号”()”;

如果的表中字段名与关键字或者函数名一样需要带上字符` (比如:mytable.`order`)。

关于Amoeba的一些注意事项的知识就介绍到这里了,希望本次的介绍能够对您有所收获!

转载 http://database.51cto.com/art/201108/281149.htm

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值