`

JDBC性能优化笔记

 
阅读更多

这部分与jdbc无关,是对于mysql优化的普通技巧

  1. 利用查询缓存。不要把函数直接写在sql语句里;
  2. 当只需要一条记录时查询加上LIMIT 1;
  3. 尽量避免SELECT *这样写;
  4. 用连接池;
  5. 建索引;

更多关于mysql的优化

 

jdbc的优化:

  1. 尽量少用元数据方法;
  2. 尽量避免null。mysql中对值为null情况花费更多的空间和处理而加重负担,应该指定专门的值来表示空值,在方法调用时传参也要避免null;
  3. 善用哑查询。在仅想得到表信息等而不需要返回记录的情况下,使用“select * from tableName where 1=0”这样的哑查询就能免于遍历;
  4. 善用预处理(PreparedStatement,PreparedCall)。PreparedStatement不但具有一次编译重复使用的优势,而且因为jdbc默认将参数以字符串形式传给数据库,而用PreparedStatement设参数则可以显式地指定数据类型,避免参数传递和来回转换的负担;
    pstmt=conn.preparedStatement("insert into test_table(......) values(....?)";
    [code="java"]pstmt.setString(1,"aaa";
    pstmt.addBatch();
    pstmt.setString(1,"bbb");
    pstmt.addBatch();
        .....
    pstmt.executeBatch();
  5. 合理选择excute方法,杀鸡就用鸡刀。execute(String sql)方法返回一个boolean值,它执行任意复杂的sql语句,可以产生多个结果集。如果有结果产生返回 true,如果没有结果集产生或仅是一个更新记数则返回 false。它产生的结果集可以通过getResultSet()和getMoreResults()获得,更新记数可通过getUpdateCount()获得。显然execute(String sql)方法的使用要复杂一些,因此如果只是简单的查询或更新操作请使用executeQuery(String sql)和executeUpdate(String sql)方法。executeUpdate(String sql)能执行INSERT,UPDATE,DELETE语句,及DDL和DML命令(此时返回值为0);
  6. 批执行更高效。stmt.addBatch(String sql); stmt.executeBatch();
  7. 最好手动提交。不但可以可以保证数据原子性,而且对新能提高留下余地
  8. try{
        boolean commitStat = connection.getAutoCommit();
        connection.setAutoCommit(false);
        // TODO: 用PreparedStatement  性能比Statementh好.
        connection.commit();
        connection.setAutoCommit(commitStat);
    } catch(SQLException e){
    } finally{
        // TODO
        if(connection!=null){
            connection.close();  
        }
    }
  9. 及时显式地关闭rs、stmt和conn(conn可以交由连接池管理);
  10. 使用数据库系统的强大查询功能去组织数据。这样程序运行是和数据库服务的交互次数少,数据库返回给程序的记录条数少的多,所以性能有很大的提高;
  11. 在rs中,正确使用get和set方法。使用列序号而不是字段名作为参数性能比较高;例如 
    getInt(1,100);
    setString(2,"aaaa");
    比
    getInt("id","100");
    setString("name","aaaa");
    性能好
    以下并不完全理解,先记着: 
  12. 建立conn时适当合适的参数。setDefaultRowPrefetch(int) 和 setDefaultBatchValue(int) 两个参数可以优化连接; 
    Properties props=new Properties();
    // TODO username pwd等参数
    props.put("defaultRowPrefectch","30");
    props.put("dufaultBatchValue","5");
    
    Connection con=DriverManager.getConnection(url, props);
     
  13. 通过setFetchSize()和getFectchSize()方法来设定和查看这个参数。这个参数对体统的性能影响比较大,太小会严重地降低程序地性能.Connection Statement ResultSet都有这个参数,他们对性能地影响顺序是:rs>stmt>conn;
  14. 适当的选择事务的隔离级别。 TRANSACTION_READ_UNCOMMITED 性能最高;TRANSACTION_READ_COMMITED 快;TRANSACTION_REFEATABLE_READ 中等;RANSACTION_SERIALIZABLE 慢
  15. 在rs优化上,设置适当的滚动方向。有3个方向FETCH_FORWORD,FETCH_REVERSE FETCH_UNKNOWN单向滚动性能比较高;

更多:

分享到:
评论

相关推荐

    jdbc编程笔记(非常难得的资源)

    ### JDBC优化技巧 1. **使用PreparedStatement**:预编译的SQL语句比Statement更安全,且性能通常更好。 2. **设置批处理**:对于大量相似的操作,批处理可以显著提升性能。 3. **关闭自动提交**:在事务处理中...

    JDBC个人学习笔记

    【JDBC学习笔记】 JDBC,全称Java Database Connectivity,是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,由Sun Microsystems公司提出。它为程序员提供了标准的API,使得开发者可以使用Java...

    JDBC笔记JDBC笔记JDBC笔记

    **JDBC(Java Database Connectivity)简介** JDBC是Java编程语言中用来规范客户端程序如何访问数据库的应用程序接口,由Sun ...在提供的压缩包文件中,`JDBC笔记.doc`可能包含了更详细的讲解和示例,建议参考学习。

    JDBC 学习笔记 JDBC 学习笔记

    JDBC优化技巧 - 使用PreparedStatement代替Statement。 - 使用批处理操作批量插入。 - 尽量减少结果集大小,避免全表扫描。 - 合理设置连接池大小,避免过多连接创建销毁。 通过深入理解和熟练运用这些JDBC知识点...

    赛尔凯达jdbc老师课堂笔记

    赛尔凯达的这份jdbc笔记不仅涵盖了以上基础知识,可能还深入探讨了高级主题,如存储过程、游标、批处理优化、JDBC与ORM框架的集成等,是学习和提升JDBC技能的宝贵资料。通过学习和实践,开发者能够熟练地使用JDBC...

    JDBC笔记_JDBC学习笔记_

    在本篇JDBC学习笔记中,我们将深入探讨JDBC的基础知识、核心概念以及实际应用。 一、JDBC基础 1. JDBC驱动程序:JDBC驱动是连接Java应用程序和数据库之间的桥梁。根据实现方式,JDBC驱动分为四种类型:类型1(JDBC...

    达内jdbc学习笔记

    总的来说,"达内jdbc学习笔记"涵盖了JDBC基础、数据库连接、SQL执行、结果集处理、事务管理和性能优化等多个关键知识点,对Java开发者来说是宝贵的参考资料。通过深入学习和实践,可以熟练地使用Java进行数据库操作...

    JDBC笔记 李勇

    8. **性能优化** - 使用`PreparedStatement`代替`Statement`。 - 通过设置合适的连接池大小,避免频繁创建和关闭连接。 - 使用批处理操作批量插入或更新数据。 - 使用数据库的索引优化查询速度。 9. **JDBC与...

    JDBC所有笔记(可下载)

    通过以上知识,你可以熟练地使用JDBC进行MySQL数据库的开发工作,包括插入、删除、更新和查询数据,以及进行事务处理和性能优化。结合实际项目经验,你会更深入理解JDBC在实际应用中的作用和价值。

    很详细的jdbc笔记 决定经典

    这份经典的JDBC笔记很可能包含了以上所有内容,甚至可能有更多关于JDBC的最佳实践、性能优化、数据库连接池配置以及如何处理复杂查询的实例。对于学习者来说,这是一份不可多得的参考资料,可以帮助他们更好地理解和...

    jdbc学习基础笔记

    **薄型驱动**(Thin Driver):也是纯Java实现,但更侧重于性能优化,目前是Oracle等数据库推荐使用的首选驱动方式。 #### 二、JDBC环境配置 1. **注册驱动**:首先,需要将对应的JDBC驱动类加载到JVM中,这通常...

    JDBC 实战教程-尚硅谷学习笔记 ,2022版

    JDBC优化** - **使用PreparedStatement避免SQL注入**。 - **关闭资源的正确顺序**:先关闭`ResultSet`,再关闭`Statement`,最后关闭`Connection`。 - **使用Statement的batchUpdate方法提高性能**。 **9. 示例...

    java,jsp,jdbc自学所用笔记和ppt

    此外,JDBC的连接池管理也是优化应用程序性能的关键。 4. **笔记和PPT**: 自学资料通常包括对每个主题的详细解释、示例代码、练习题和解决方案。笔记可能会深入讲解概念,提供清晰的步骤和解释,而PPT可能更注重...

    达内,tarena,jdbc笔记,jdbcPPT课件,达内jdbc笔记

    优化JDBC包括合理使用PreparedStatement,避免过度使用数据库连接,及时关闭资源,批量处理数据,以及根据需求调整数据库连接池配置等。 总结,JDBC是Java与数据库交互的重要工具,掌握其基本使用和优化技巧对于...

    传智播客视频Jdbc学习笔记

    ### 传智播客JDBC学习笔记精要 #### JDBC简述与连接 ...综上所述,传智播客的JDBC学习笔记涵盖了从基础的数据库连接到高级的事务管理、连接池优化等多个层面的内容,是Java开发者学习和掌握JDBC技术的重要参考资料。

    JDBC学习笔记(精华版)-1

    **四、JDBC优化技巧** 1. **批处理**:使用PreparedStatement的`addBatch()`和`executeBatch()`提高多条SQL执行效率。 2. **预编译SQL**:PreparedStatement能有效防止SQL注入,且执行多次相同SQL时性能更优。 3....

    JDBC笔记,初学者的笔记

    总之,JDBC是Java程序员必备的技能之一,它使得我们可以灵活地操作数据库,执行复杂的SQL语句,进行事务管理,并有效优化数据库交互性能。通过熟练掌握JDBC,开发者能够更好地设计和实现数据驱动的Java应用程序。

    JDBC学习笔记.txt

    ### JDBC学习笔记知识点详解 #### 一、JDBC概述与选择 JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供...

    这里是我的MySql和Jdbc的学习笔记, 要重点整理, 日后作为讲课使用.zip

    在JDBC中处理大量数据时,批量更新(Batch Updates)能显著提高性能。通过调用Statement对象的addBatch()方法添加SQL语句,然后执行executeBatch()来一次性提交所有操作。 最后,确保正确关闭数据库连接,避免资源...

Global site tag (gtag.js) - Google Analytics