`
kabike
  • 浏览: 609873 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

mysql直接通过handler读取数据

阅读更多
前几天在mysql文档中发现了它有个handlerhttp://dev.mysql.com/doc/refman/5.1/en/handler.html,
号称比select要快,因为省略了sql解析,查询优化等环节,也不用提供一致性读.
所以用mysqlslap测试一下
CREATE TABLE `20130122handler` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) NOT NULL,
  `content` varchar(50) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `20130122handler_idx_uid` (`uid`)
) ENGINE=InnoDB

表里600w条随机数据

[mysqlslap]
query="D:/mysql-5.1.63-node1/mysqlslap-query_handler.sql"
create-schema="crap"
delimiter=";"
concurrency=1
iterations=200

mysqlslap-query_handler.sql内容为

HANDLER 20130122handler open as h;
HANDLER h read  20130122handler_idx_uid=(26010200);
HANDLER h read  20130122handler_idx_uid=(23742985);
......

一共有100个HANDLER h read
测试三次,结果如下

Benchmark
        Average number of seconds to run all queries: 0.035 seconds
        Minimum number of seconds to run all queries: 0.000 seconds
        Maximum number of seconds to run all queries: 1.032 seconds
        Number of clients running queries: 1
        Average number of queries per client: 101


Benchmark
        Average number of seconds to run all queries: 0.030 seconds
        Minimum number of seconds to run all queries: 0.000 seconds
        Maximum number of seconds to run all queries: 1.016 seconds
        Number of clients running queries: 1
        Average number of queries per client: 101


Benchmark
        Average number of seconds to run all queries: 0.025 seconds
        Minimum number of seconds to run all queries: 0.000 seconds
        Maximum number of seconds to run all queries: 1.032 seconds
        Number of clients running queries: 1
        Average number of queries per client: 101
      
换成了
select  * from 20130122handler where uid=26010200;
select  * from 20130122handler where uid=23742985;
......

结果为


Benchmark
        Average number of seconds to run all queries: 0.055 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 1.031 seconds
        Number of clients running queries: 1
        Average number of queries per client: 100


Benchmark
        Average number of seconds to run all queries: 0.050 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 1.032 seconds
        Number of clients running queries: 1
        Average number of queries per client: 100


Benchmark
        Average number of seconds to run all queries: 0.044 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 1.032 seconds
        Number of clients running queries: 1
        Average number of queries per client: 100
看来还是有一定的性能的提升.
分享到:
评论

相关推荐

    MySQL Metadata Locking

    - **HANDLER接口**:MySQL的HANDLER接口提供了低级别的表访问,这里也需要处理元数据锁。 - **LOCK TABLES下的操作**:当表被显式地锁定时,元数据锁的行为会有所不同。 - **非法的锁升级情况**:自动修复和自动发现...

    MYSQL神秘的HANDLER命令与实现方法

    2. `READ` 命令用于读取数据,根据索引和条件来定位记录。它可以按照索引名和比较操作符(如 `=`, `, `>` 等)来查找记录,或者使用 `FIRST`, `NEXT`, `PREV`, `LAST` 关键字来遍历索引。 3. `CLOSE` 命令用于关闭...

    adroid中将mysql数据库中的数据读取到本地txt文件上时,出现数据库连接错误

    首先,我们要明白的是,Android系统本身并不支持直接连接到远程MySQL服务器,因为它不包含MySQL的客户端库。通常,我们会通过Web服务(如RESTful API)来间接实现数据的获取。以下是一个简单的步骤概述: 1. **构建...

    MySQL运行状态查询与参数说明

    最后,MySQL提供了一个“SHOW PROCESSLIST”命令,让DBA可以直接查看当前所有活动进程的状态信息,包括id、user、host、db、command、time、state、info等列。其中,id为连接标识,user显示当前用户,host指示命令...

    php mysql数据库 存储session

    2. **创建session表**:在MySQL数据库中创建一个专门用于存储session数据的表,通常包括字段如`session_id`(存储session ID)、`timestamp`(记录session最后更新的时间)和`data`(序列化后的session数据)。...

    Mysql中sql语句游标详解

    - **定义**:虽然MySQL没有直接支持API游标这一概念,但在实际应用中,可以通过OLEDB、ODBC等接口来实现类似的功能。 - **应用场景**:适用于客户端应用程序与数据库之间的交互。 - **特点**:支持客户端应用程序...

    mybatis中操作json类型数据(csdn)————程序.pdf

    总结来说,MyBatis通过自定义TypeHandler实现了对MySQL JSON字段的映射,利用Jackson库进行JSON数据的序列化和反序列化,确保Java对象和数据库中的JSON数据能顺利地进行转换和交互。在处理复杂的数据结构时,这样的...

    mysql5.7连接执行过程1

    在 MySQL 5.7 中,连接执行过程是通过 `do_command()` 函数来实现的,该函数位于 `sql/conn_handler/connection_handler_one_thread.cc` 文件中。`do_command()` 函数会从连接中读取一个命令,并执行它。如果命令是...

    MySQL源码初探

    执行器根据这个计划调用相应的存储引擎功能,如读取数据、更新记录或创建索引。数据流涉及网络通信、内存管理及磁盘I/O等多个层面。 6. **Plugin介绍** MySQL的插件系统允许扩展其功能,如新的存储引擎、认证方法或...

    MySQL源码结构解析

    - **handler**:继承自MySQL的handler,实现handler API与Server交互。这是存储引擎与服务器层之间的接口。 - **ibuf**:插入缓冲(Insert Buffer)的实现。用于批量插入操作,提高写性能。 - **lock**:InnoDB的锁...

    精准掌控数据流:MySQL游标在批量更新和删除中的应用

    MySQL中的游标主要在存储过程或函数中使用,用于逐行读取查询结果集中的数据并执行相应的操作。 #### 二、游标的优点 - **逐行处理**:能够逐行读取和处理结果集中的数据,非常适合于需要针对每一行记录执行特定...

    java后台jxl将excel数据导入到MYSQL中

    MySQLHandler.insertIntoDatabase(excelData); } ``` 以上代码只是一个基础示例,实际应用中需要考虑更多细节,如异常处理、数据类型转换、批量操作性能优化等。同时,为了提高效率和减少内存消耗,建议使用流式...

    oracle与mysql各种语法定义及函数的不同之处及解决方案

    - **读取数据**: - Oracle:使用`FETCH`语句(例如:`FETCH cursor_name INTO var_1, var_2, ..., var_n;`) - MySQL:同样使用`FETCH`语句(例如:`FETCH cursor_name INTO var_1, var_2, ..., var_n;`) - **...

    MySQL status解读.zip_MYSQL

    10. **Handler_read_rnd_next**:用于顺序扫描的行读取次数,如果很高,可能意味着没有适当的索引,需要进行索引优化。 11. **Bytes_sent** 和 **Bytes_received**:分别记录发送和接收的数据量,可用来评估网络I/O...

    MySQL游标:数据库操作的精准定位器

    接着打开游标并进入一个循环,使用 `FETCH` 语句逐行读取数据,直到所有数据都被处理完毕。最后关闭游标。 #### 考虑的因素 虽然游标提供了许多优势,但在使用时仍需考虑以下几个因素: - **性能**:处理大量数据...

    mysql 存储过程应用(代码详解)

    这里设置了控制流程,首先将`b`的值设为`1`,然后打开游标`a`,通过`REPEAT`循环不断读取数据到变量`c`中,直到没有更多的数据可读取为止。最后关闭游标并设置输出参数`re_value`的值为`c`。 #### 四、调用存储过程...

    mysql七天定时下架任务

    -- 循环读取数据 FETCH Integral_cursor INTO PostID, DifferDay; WHILE done = 0 DO IF DifferDay > 7 THEN UPDATE postrelease SET PostType = 2 WHERE ID = PostID; END IF; FETCH Integral_cursor INTO ...

    如何处理大数据量的查询

    该模式创建一个ValueListHandler对象来控制查询的执行以及结果集的缓存,它通过DAO(Data Access Object)来执行查询,并将数据库返回的结果集(传输对象Transfer Object的集合)缓存起来,接下来的客户端查询请求将...

    MySQL 你走向何方

    2005年10月,Oracle 收购了 InnoDB OY,尽管当时 Oracle 并未直接拥有 MySQL,但这一举动为后来 Oracle 收购 MySQL 奠定了基础。 **5. Sun Microsystems 收购 MySQL AB(2008年)** 2008年1月,Sun Microsystems ...

    mysql中游标的使用案例详解(学习笔记)

    通过以上的介绍和案例分析,我们可以看到游标在MySQL中的强大功能,特别是在处理需要逐行访问数据的情况下。然而,需要注意的是,游标的使用会消耗更多的系统资源,并且可能会影响性能。因此,在设计应用程序时,...

Global site tag (gtag.js) - Google Analytics