Amoeba for Mysql 1.3.1-BETA发布
Amoeba for Mysql 1.3.1-BETA 版本发布:
Bug Fix:
1、主要解决 1.3.0 -BETA 版本的amoeba进程的native memory(非JVM heap)使用逐步增长(内存增加速度取决于请求量),并且最终会导致amoeba本身无法响应、或者崩溃
请大家停止使用1.3.0-BETA版本
Amoeba for Mysql 1.3.1-BETA 版本发布:
Bug Fix:
1、主要解决 1.3.0 -BETA 版本的amoeba进程的native memory(非JVM heap)使用逐步增长(内存增加速度取决于请求量),并且最终会导致amoeba本身无法响应、或者崩溃
请大家停止使用1.3.0-BETA版本
Amoeba for mysql 1.3.0-BETA发布:
1、解决部分sql 解析问题
2、解决刚刚创建的mysql连接偶尔出现timeout的情况
3、兼容部分客户端启用压缩协议无法连接到amoeba的情况
———新BUG————————
1、使用native memory溢出
2010-07-01 发布了Amoeba for Mysql 1.2.1-GA 版本
主要修改以下内容:
1、解决了一个Connection close 与 Query Session结束的时候偶尔会出现 Deadlock!
2、增加 queryTimeout 的超时时间可调整,保证amoeba在执行sql的时候不会由于mysql数据不返回而导致链接回收慢的问题
3、修复ConnectionManager 在关闭 connection的时候出现异常导致ConnectionManager无法正常工作
4、修复tableRule在没有规则的情况下无法正常工作的bug
2010-05-01 amoeba-mysql-1.2.0-RC3
1、修复了select last_insert_id() 返回id过大以后,客户端无法获得的问题
2、支持PHP的PDO,个人不是PHP程序员,希望有更多使用PDO的开发人员反馈
3、增强了amoeba与mysql的连接池心跳检测机制(修复HA机制的支持)
4、另外提醒使用amoeba的同仁,建议采用prepared statement来访问amoeba,这样amoeba就不需要重复解析sql语句。会节约不少的资源
5、amoeba的日志输出,默认级别是info甚至更高。需要看到更详细的日志信息,请修改amoeba下面的conf/log4j.xml
6、稳定性增强
7 、修正错别字(isReadStatment –> isReadStatement )
8 、修正insert语句中包含 ON DUPLICATE KEY UPDATE 关键字而无法解析的问题
2010-04-05 amoeba-mysql-1.2.0-RC1
1、添加规则函数case、range、增加表达式 (boolean表达式 ? 表达式1: 表达式2)
range函数:
id in range(12,16,0,1) 表示 id>12 and id<=16
id in range(12,16,0,0) 表示 id>12 and id<16
id in range(12,16,1,0) 表示 id>=12 and id<16
id in range(12,16,1,1) 表示 id>=12 and id<=16
case 函数
case (abs(hash(SDID)) % 32) when range(0,8,1,0) then (isReadStatment ? ’server1′ : ’server1_write’);
when range(8,16,1,0) then (isReadStatment ? ’server2′ : ’server2_write’);
when range(16,24,1,0) then ‘(isReadStatment ? ’server3′ : ’server3_write’)';
else ’server4′
END CASE;
2、增加bool 类型的规则内置变量 isReadStatment
用户可以在规则的表达式中使用比如 : isReadStatment? ‘pool1′ : ‘pool2′
3、稳定性增强,解决了在大并发下需要多个数据库聚合结果集的时候出现数据异常而无法返回给客户端的问题
4、规则属性新增加ruleResult属性,有3种类型(BOOLEAN、POOLNAME、INDEX)
BOOLEAN — 默认值、结果一定是布尔值,表示执行的sql是否匹配当前的规则
POOLNAME — 结果是字符串,是由dbpool名字组成的字符串,多个pool以分号间隔(rule中的defaultPools、readPools、writePools无效)
INDEX — 结果是数字 ,如果>=0 则表示当前规则匹配,并且将相关index的pool返回
<tableRule name=”LIST_FRIEND_GROUP,RELATION_FOLLOW” schema=”sd_relation”
defaultPools=”server1,server2,server3,server4″>
<rule name=”rule1″ ruleResult=”POOLNAME”>
<parameters>SDID</parameters>
<expression><![CDATA[
var hashid = abs(hash(SDID)) % 32;
case hashid when range(0,8,1,0) then (isReadStatment ? 'server1' : 'server1_write');
when range(8,16,1,0) then (isReadStatment ? 'server2' : 'server2_write');
when range(16,24,1,0) then '(isReadStatment ? 'server3' : 'server3_write')';
when range(24,32,1,0) then '(isReadStatment ? 'server4' : 'server4_write')';'
END CASE;
]]></expression>
</rule>
</tableRule>
5、支持select last_insert_id()/ @@Identity --最后一次自增长的ID
6、规则函数中,增加自定义变量(格式 var 变量名称= 变量值 ;) 比如: var hashid = abs(hash(SDID)) % 32;
Amoeba for mysql 1.1.0-BETA发布
主要解决以下问题:
1、解决amoeba运行一段时间以后可能出现阻塞
2、修复个别sql解析问题
3、重构了ConnectionManager,去除之前读取数据包采用线池的方式,改成目前采用MultiConnectionManagerWrapper,采用多个(具体多少默认由可用的cpu 核数量决定)ConnectionManager进行负责网络IO, 而每个ConnectionManager都是一个单线程
注意:与之前的amoeba.xml在配置上有点出入(defaultManager 的配置与之前不一样了)
修复bug列表:
1、修复无法解析抛出unknown statement(1.0.0新bug)。将无法解析得sql默认在defaultPool中执行
2、修复union关键字无法解析问题
3、修复函数前面! 无法解析问题
4、修复order by 、group by 后面带表达式得sql
Amoeba 默认设置支持客户端设置编码的方式是 : set names gbk 其他方式目前还没考虑到。
Discuz遇到编码问题,可以通过修改 include/db_mysql.class.php 里的 设置编码方式改成:
set names utf8
–即支持utf8编码格式
原文来自:
http://hi.baidu.com/hlxwell/blog/item/ea0d445913af102d2834f0d5.html
该版本基于0.32版本之上进行bugs fixed,非常感谢阿权提供的一些bug列表
这次版本跳跃比较大,也是我打算在amoeba这个项目花下时间的决心。因此将amoeba提升到新的起点1.0.0版本
下面是这次主要的变更:
1、修复sql解析 explain 关键字开始的sql
2、修复FORCE INDEX (xx) 之类的sql无法解析问题
3、修复包含转义符合在内的sql 比如:insert into xx values(’\'test\’)
4、修复包含 Order by rand()的sql
5、调整默认 网络接受发送缓冲区成128k
很多人使用mysql odbc驱动来连接amoeba。在其中出现各种问题
amoeba目前只解析mysql 协议10 以上版本,或者是mysql 4.1以上版本。
mysql ODBC 3.51 (ODBCAD32.exe)测试通过
mysql ODBC 5.1 (ODBCAD32.exe)测试通过(建议使用)
请大家别用其他连接参数,比如压缩流(个别版本会引起工作不正常)