网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

MYSQLJDBC快速查询响应的方法以及如何快速返回机制的实现

MySQL JDBC快速查询响应的方法以及如何快速返回机制的实现,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联是专业的丹东网站建设公司,丹东接单;提供网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行丹东网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

一直很纠结,Oracle的快速返回机制,虽然结果集很多,可是它能很快的显示第一个结果,虽然通过MYSQl的客户端可以做到,但是通过JDBC却不行。

今天用了1个多小时,终于搞定此问题,希望对广大Java朋友在处理时有个参考。

来由:

    通过命令行客户端加上-q参数,可以极快的响应一个查询。
    比如结果集为几千万的select * from t1,完整结果集需要20秒,通过-q参数显示第一行只需要不到1秒。
    但通过jdbc进行查询,却不可以实现如上的效果,无论怎么调整URL参数,也不行。
   
过程:
    查看了-q参数的解释,如下:
    If you have problems due to insufficient memory for large result sets,
    use the --quick option. This forces  to retrieve results
    from the server a row at a time rather than retrieving the entire result set
    and buffering it in memory before displaying it. This is done by returning
    the result set using the mysql_use_result() C API function in the client/server
    library rather than mysql_store_result().
   
    可见,实现快速响应。
   
    查看 mysql_use_result() 函数,这个是C的API,如果通过C开发,可以用这个函数。
   
    那么JAVA呢?
   
    查找便准JDBC规范里面有关函数,没有任何收获。 setFetchSize()看上去有效,可在实际测试里,无任何性能提升。
   
    搜索 JDBC mysql_use_result, 有了意外的收获。
   
    在MYSQL的JDBC,com.mysql.jdbc.Statement 这个接口里发现了如下的内容:
     abstract public  void disableStreamingResults() throws SQLException

    Resets this statements fetch size and result set type to the values they
    had before enableStreamingResults() was called.

 abstract public  void enableStreamingResults() throws SQLException

    Workaround for containers that 'check' for sane values of Statement.setFetchSize()
    so that applications can use the Java variant of libmysql's mysql_use_result() behavior.
   
   
  原来MySQL提供了自己的一个快速响应的实现。调整测试代码
 
      stmt = (com.mysql.jdbc.Statement) con.createStatement();
      stmt.setFetchSize(1);
        //
        // 打开流方式返回机制
        stmt.enableStreamingResults();
       
        我期待的效果出现了。第一行数据被快速的现实出来,时间不到1秒中。
    MySQL在自己的JDBC驱动里提供了特有的功能,来实现查询的快速响应,
    特别是结果集非常大或者时间较长,而用户非常想尽快看到第一条结果时特别有效。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


新闻标题:MYSQLJDBC快速查询响应的方法以及如何快速返回机制的实现
文章源于:http://bjjierui.cn/article/ghopjo.html

其他资讯