免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1225 | 回复: 0
打印 上一主题 下一主题

HandlerSocket使用两个注意点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:53 |只看该作者 |倒序浏览

最近为了挖掘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、列之间只能用","分隔,不能有其他空格等字符;

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP