MySQL使用变形虫作为代理时的注意事项

  (1).Amoeba不支持事务
  目前变形虫不支持事务,任何有关事务的SQL语句都会被变形虫屏蔽掉。如果必须使用事务,而且事务内的处理操作都可以路由到同一台MySQL上的话,可以考虑在存储过程中使用事务进行处理。另外,变形虫将来有望支持事务。
  
  
  变形虫不支持跨库加入和排序
  跨库的加入和排序非常消耗资源,会导致性能严重下降,变形虫没有进行支持。
  
  
  (3).Insert语句必须指定表的列名
  变形虫是根据SQL语句进行解析的,如果SQL语句中没有切分规则中的关键字,那么变形虫就不会按照规则进行水平切分。比如,按照城市ID进行数据水平切分时,如下语句不会被正确切分:
  插入tb_Shop值(1、5”店铺的名称“,”店铺的地址”,1,' 2011-07-30 ');
  而如下语句则可以正确切分:
  插入tb_Shop (Shop_ID ity_ID ShopName,地址,ShopStatus, CreateTime)值(1、5”店铺的名称“,”店铺的地址”,1,' 2011-07-30 ');
  也就是说,切分规则中的关键字City_ID必须要在SQL语句中出现。
  
  
  (4).Amoeba不支持分库分表。
  变形虫不支持分库分表,只能分MySQL实例。
  
  
  (5).Amoeba不支持大数据量的查询。
  大数据量的查询非常消耗内存,变形虫在进行大数据量查询时性能会非常差。当然,实际业务中需要进行大数据量查询的情况会非常少或者根本没必要实现这种情况。这里所谓的大数据量查询指的是一次查询结果超过十万行。
  
  
  (6).Amoeba需要更严格的SQL语句规范
  从关键字后面如果不是子查询,一律不能带括号“()”;
  如果的表中字段名与关键字或者函数名一样需要带上字符”(比如:mytable。“订单”)。

MySQL使用变形虫作为代理时的注意事项