2025年handler使用_java中的handler

handler使用_java中的handler创建测试表 root test 04 53 11show create table t Table Create Table

创建测试表:

root@test 04:53:11>show create table t;
+——-+——————————————————————————————————————————————————————————————————————————+
| Table | Create Table |
+——-+——————————————————————————————————————————————————————————————————————————+
| t | CREATE TABLE `t` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`a` varchar(10) NOT NULL,
`b` varchar(10) NOT NULL,
PRIMARY KEY (`id`),
KEY `a_b` (`a`,`b`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=gbk |
+——-+——————————————————————————————————————————————————————————————————————————+
1 row in set (0.00 sec)

1). 打开索引:

P []

columns表示指定获取的列

fcolumns用于做过滤的列

各个字段用TAB进行分割,handlersocket将打开相应的index,并保持打开直到客户端关闭,重复打开相同的indexid将导致之前的index被关闭并重新打开。indexname=’PRIMARY’表示主键索引

$sudo telnet localhost 9999
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
P 1 test t primary id,a,b
2 1 idxnum
P 1 test t PRIMARY id,a,b
0 1

注意,这里的大小写是敏感的,另外primary后面的不是空格,而是tab

2).插入一条数据:

+

indexid是之前打开的索引id;

vlen是索引的列数,vlen不大于open_index时的columns个数紧随其后的是各列的值,对于不在其中的列,值被设为默认值

例如:

P 1 test t primary id,a,b

1 + 3 NULL a4 b4

0 1 5

1 + 3 7 aaaaaaa bbbbbb

0 1 0

返回值0 1 表示执行成功

看起来,当自增列为NULL时,返回值中包含了自增列的值

3).更新/删除一条数据:

[LIM] [IN] [FILTER …] MOD

op:用于支持比较操作,目前支持 = 、>、>=、<、<=

vlen:小于或等于索引的列的个数

LIM:

IN: @ ,icol要比索引列的个数小,

IN类似于SQL中的where语法

FILTER:

ftyp值为 ‘F’(filter)或者‘W’(while)

fop指定比较操作,与op相似

fcol:必须比fcolumns要小

可以设置多个filter,这类似于where字句中的 ‘and’

MOD是一个类似如下的序列:

mop的值包括:

U (update)

+ (increment)

– (decrement)

D (delete)

当在mop后面加?时,将返回修改前的数据

,指定列的值

当执行delete操作时,即mop = D时,这些值会被忽略

当mop为+或-时,后面的值必须为整数

当mop为-时,若从负数变成正数或从正数变成负数,将不会改变列的值

例如,delete from test.t where id > 3 limit 1;

P 2 test t PRIMARY id,a,b

0 1

2 > 1 3 1 0 D

update test.t set a = ‘aa’, b = ‘cc’ where id = 3;

2 = 1 3 1 0 U 3 aa bb

0 1 1

4). 查询数据:

[LIM] [IN] [FILTER …]

与3)类似,但没有mod操作

例如SQL操作:select id,b,a from test.t where id >= 5 limit 3

P 2 test t PRIMARY id,b,a

0 1

2 >= 1 5 3 0

0 3 5 b4 a4 7 bbbbbb aaaaaaa 8 NULL NULL

可以看出handlersocket还是有一些限制的:

1.无法支持比较复杂的查询,例如跨表、跨库的嵌套查询

2.必须要有索引

3.一些复杂的sql例如insert…..on duplicate key , insert…..select等类似的查询还无法支持

编程小号
上一篇 2025-01-24 13:30
下一篇 2025-03-07 12:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/145710.html