Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21043
  • 博文数量: 5
  • 博客积分: 251
  • 博客等级: 二等列兵
  • 技术积分: 70
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-27 10:46
文章分类

全部博文(5)

文章存档

2011年(4)

2010年(1)

我的朋友

分类: Mysql/postgreSQL

2011-07-09 14:41:29

最近为了挖掘mysql的性能,使用了HandlerSocket来访问数据,表现确实还不错,特别是使用merge表的时候。

但是HandlerSocket(一下简称hs)本身的文档比较少,出错信息不是很友好,出错的时候比较难定位问题,往往要翻阅其源代码,这里分享两个我最近遇到的问题:

表结构如下:

mysql> show create table tab_xxx\G
*************************** 1. row ***************************
       Table: tab_xxx
Create Table: CREATE TABLE `tab_xxx` (
  `Type` char(2) DEFAULT NULL,
  `flag` char(1) DEFAULT NULL,
  `count` char(2) DEFAULT NULL,
  `file_id` char(10) DEFAULT NULL,
  `exc_id` char(4) DEFAULT NULL,
  `FileType` char(2) DEFAULT NULL,
  `subno` char(24) DEFAULT NULL,
  KEY `idx_subno` (`subno`)
) ENGINE=InnoDB

使用hs访问的时候我使用了如下语句:

client->request_buf_open_index(id, "db_name", "table_name", "subno", "EventFormatType, roll_flag, roll_count, file_id, exc_id, FileType,subno", 0);

该语句在运行是报以下错误:2 idxnum,看得一头雾水,没办法只好翻阅一下源代码,搜索 idxnum,找到了问题,KEY的名称必须使用idx_subno,这个问题解决了,重新编译运行,另一个问题又来了,报以下错误:2 fld,有了前面的经验,继续搜索源代码,原来hs列之间只能使用","分隔,不能有其他空格等字符,这个是在代码里面写死了的,于是修改如下:

client->request_buf_open_index(id, "db_name", "table_name", "idx_subno", "EventFormatType,roll_flag,roll_count,file_id,exc_id,FileType,subno", 0);
这次终于运行成功了。

总结:

1、key要使用key名称,不能使用列名称;

2、列之间只能用","分隔,不能有其他空格等字符;

阅读(884) | 评论(0) | 转发(0) |
0

上一篇:thrift入门

下一篇:strncpy的性能问题

给主人留下些什么吧!~~