`
heipn
  • 浏览: 37952 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Timesten for java guide 学习笔记

阅读更多
使用timesten for java
i.    Java类
   想链接timesten,在你的java类中你需要引入标准jdbc包(java.sql.*)如果你想使用数据源你还需要引进包javax.sql.*包。Timesten  提供了对标准java标准包的扩展。
     com.timesten.jdbc.DataSource 实现了javax.sql.DataSource接口
    com.timesten.jdbc.TimesTenVendorCode 实现了javax.sql.XADataSource接口
    com.timesten.jdbc.TimesTenConnection 实现了java.sql.Connection接口

ii. 链接timesten
在操作手册中讲解了如何创建一个DSN来定义一个到timesten的连接。你创建的DSN的类别取决于你创建的链接是直接连接数据库还是通过一个客户端。当你创建完一个DSN,程序就可以链接数据库了。timesten的数据库连接驱动是com.timesten.jdbc.TimesTenDriver,其他和我们使用jdbc链接数据库一样。

iii. 创建一个connection Url对timesten数据库
格式如下:jdbc:timesten:{direct | client}:dsn=DSNname;[DSNattributes;]
如:jdbc:timesten:direct:dsn=demo
可以在后面加参数  如:jdbc:timesten:direct:dsn=demo;LockLevel=1

iv. 链接数据源
定义了Connetion URL 可以通过DriverManager.getConnection() 或者 TimesTenDataSource.getConnection()方法连接到数据库。
如果要使用数据源:
TimestenDataSource ds = new TimestenDataSource();
ds.setUrl(url);
Connection con = ds.getConnection();

关闭连接使用connection.close()方法

v. 在java程序中调用SQL Statement的方法
□ 使用con.setAutoCommit()方法设置是否自动提交事务。如果不是自动提交你可以调用Connetion.commit()方法手动提交。
□ PraperedStatement
当你准备通过PraperdStatement执行Sql,调用Connetion.commit()方法来释放先前获得锁和?????。当你执行完了一个prapered statment后,调用ParperedStatment.close释放相关资源。

vi. 执行Sql语句
与jdbc中操作一样。
在执行一个sql时,可以设置执行的超时,你可以在timesten中通过设置DSN的设置,设置所有链接的执行Sql的超时时间。你也可以在当前连接中调用Statement.setQueryTimeout重新设置执行一个Sql的最长响应时间。在timesten超时时间必将的是触指其执行的Sql语句超时。设置超时时间的操作只能在非事务性的操作起作用,对于事务而言,当事务执行的时候,timesten不会管这个超时时间。
注意:在LockWait值和SqlQueryTimeout在timesten中被同时设定时,值小的值会被timesten采用。


vii. 抓取多条数据
你可以制定你要抓取的数据的数量:
□ 调用Statement.setFitchSize()和ResultSet.setFitchSize()方法,这是标准jdbc调用。但是一次设置只在一个statment中有用。
□ 你可以调用TimestenConnection.setFitchCount()方法或者使用ttIsql prefetchcount命令。通过这种方式可以设置一个connetion的所有statment的抓取数量。注意:你只能在direct-linked模式下使用TimestenConnection的setFitchCount方法才有作用。当你将setFItchCount(int count)中的count设为零时,timeten将使用默认值,这个默认值依赖于你对数据库设置的Isolation的级别。在read commited 下,这个值为5,在serializeable模式下这个值为128.


viii. 通过batch同时执行多条语句
与jdbc一致

ix. 结果集ResultSet
□ TimesTen不支持在一个statment中打开多个ResultSet,一个statment不能返回多个ResultSet。
□ TimesTen不支持持有游标。你不能指定长期持有一个ResultSet及时在Commit后没有关闭ResultSet。
□ ResultSet对象不能制定ResultSet.CONCUR_UPDATABLE和ResultSet.TYPE_SCROLL_SENSITIVE属性
□ 在你使用完ResultSet后马上关闭它。
□ ResultSet的getString方法是个高昂消耗的方法,尽量少使用它。
JDBC ignores the setting for the ConnectionCharacterSet attribute. It
returns data in UTF-16 encoding.

x. 在timesten中使用存储过程
xi. 处理多线程
当你使用direct-linked模式连接数据库,timesten使用一个共享栈在你程序中。在多线程环境下,避免给线程重复分配栈是非常重要的。这个栈空间的消耗取决于Sql的执行。在32位机上该栈空间最小是16kb,64位机上在34kb到72kb之间。给每个线程分配的栈空间依赖于操作系统。注意:在多线程环境下,一个线程发出的对同一数据的请求在多个连接器上可能会造成死锁。timesten解决这种死锁的方法是使用lock timeouts。

xii. 回滚失败的事务
使用Connection.rollback()方法回滚失败的事务。






调优你的程序:(以下大部分建议对oracle数据库也应该适用)
i.    关闭autocommit模式
     XACT_COMMITS中的SYS.MONITOR表记录了事务提交的次数。大量的无意义的事物提交对系统的效率会有较大的影响

ii.   选择一个合适的超时时间

iii.   减少链接数量
   Data store contention can substantially impede application performance.(大量存储连接会大大影响系统的效率)
□    选择适当的锁级别
□    分布存储你的表或者数据
  在SYS.MONITOR表中LOCK_GRANTS_IMMED,LOCK_GRANTS_WAIT和LOCK_GRANTS_CONT记录当前的锁信息。

iv.   选择最好的锁方法
  timesten支持data-level locking、table-level locking和row-level locking

v.   使用恰当的锁级别
如果访问连接非常少(很少有事务同时产生的时候),使用表锁定会得到非常好的效率和很少发生死锁的情况。表锁定也非常适用于几乎全表的数据update的时候。Date-level locking 一般在系统初始化时使用。

vi. 选择恰当的隔离级别
当使用row-level locking时,程序事务可以是serializeable 和 Read_committed级别,默认是Read_committed级别。
当事务运行在serializeable的隔离级别时,timesten 将在整个事务过程中持有所有的锁。   //todo: 验证这两种方式。
□      任何的对于row锁的更新都在commit时写入。                                                   
□      该row在事务commit后才能读。
当事务运行在Read_committed级别时,timesteen只在整个过程中持有更新锁。 
SYS.MONITOR表中的LOCK_TIMEOUT和DEADSLOCK记录着锁消息。

vii. 选择恰当的日志配置
SYS.MONITOR表中的LOG_FORCES配置了日志写入硬盘的时间间隔。你可以使用LogDir参数在创建链接的时候,自己指定日志的输出目的地。

viii. 使用prepared statement

ix. 避免不必要的prepared选项
应为预编译Sql语句是一个较昂贵的操作,所以你的程序应尽量将调用Connection.PraperedStatement降到最小。尽量将多的操作放在同一个事务里多次调用在一个connction中,PraperedStatment在一个conntion关闭后失效。

x. 使用batch一次执行多条语句
当有多条Sql执行时,使用Statment和PraperedStatment的execute的batch方法,可以提高程序的效率。

xi. 大批量的抓取数据、
避免获取当量数据时,其中某些数据有锁。

xii. 适当的事务大小
每一个事务提交时timesten会自动的产生日志,并自动触发写入日志到硬盘。高效的系统应当避免不必要的磁盘写入。如果你的磁盘io使用率过高,可以通过两种方式在事务提交的时候避免写入。
□  调整事务的大小
□ 调整当事务提交时是否写入属性
长事务的执行只有很少的磁盘写入,当时要控制多个长事务同时发生。如果整个程序只有一个链接操作数据库,长事务确实可以大大提高程序的性能。但长事务同时有很多缺陷,比如长事务的回滚。
如果有多个连接,你需要抉择io的延迟还是锁的延迟,最好保持他们自然的长度。这取决于他们的持久性和原子性。

xiii. 恰当的事务提交
Timesten 会默认将每一次事务提交的结果写入硬盘,以便在系统出现问题的时候不置数据丢失。程序可以避免对非持久性的提交的对磁盘的写入操作。
SYS.MONITOR表中的XACT_D_COMMITS记录着持久性提交的数量。事务可以定义成持久的可以定义延迟的在链接的底层,程序可以调用
ttDurableCommit方式强制持久提交。

xiv. 保守的使用ResultSet.getString方法
因为Java中String是不可以改变的,ResultSet.getString方法在每次调用的时候重新分配空间。在JDBC中这是个昂贵的调用。你可以使用原始数据类型,如byte或者Integer,除非必须使用String。使用这些原始类型是速度是非常快的。

xv. 避免类型转换

xvi. 避免事务回滚
从性能的角度出发这是我们不愿看到的:一个事务的回滚不仅回滚本身带了了性能上的开销,而且也同时代表的事务本身的消耗的浪费。

xvii. 避免频繁的checkpoints
有时候我们需要调用ttCkpt程序来检查日志文件是否已经填满了整个硬盘,这个操作对系统性能有较大影响。但ttCkpt是一个非阻塞操作,比起ttCkptBlocking的阻塞操作来说要好的多。

对jdbc接口的支持:
        
   timesten的Connetion等类节本实现了对java.sql和javax.sql下面标准接口的实现             

对jdbc接口的扩展:
           
              对jdbc的扩展主要是TimesTenConnection和TimesTenVendorCode  (具体信息参看文档)

             









分享到:
评论

相关推荐

    TimesTen for java 开发指导手册

    # TimesTen for Java 开发指导手册 ## 关于 TimesTen In-Memory Database ### 背景介绍 TimesTen In-Memory Database 是一款专为高性能、低延迟的应用场景设计的内存数据库系统。它通过将数据存储在内存中来提供...

    Oracle Timesten 数据库 java手册

    ### Oracle Timesten 数据库 Java 手册解析 #### 关于 Oracle Timesten 数据库 Java 手册 Oracle Timesten 数据库是一款高性能的内存数据库系统,被广泛应用于需要高速数据处理的应用场景中。该数据库提供了对 ...

    Oracle_TimesTen_Java.rar_oracle_oracle timesten_timesten

    3. **Java开发示例**: Oracle_TimesTen_Java.pdf文档很可能是包含Java开发示例和详细教程的资料,可以帮助开发者了解如何在Java环境中使用TimesTen。 4. **连接池管理**: 支持连接池管理,优化资源利用率,减少...

    Oracle TimesTen Java Developer and Reference Guide

    ### Oracle TimesTen In-Memory Database:Java 开发者与参考指南 #### 关键知识点解析: **1. Oracle TimesTen In-Memory Database** Oracle TimesTen 是一款高性能、低延迟的内存数据库系统,专为实时交易处理...

    timesTen java jdbc连接demo 附带ttjdbc1.6-1.8jar

    `timesTen`提供了Java数据库连接(JDBC)接口,使得Java开发者能够方便地与timesTen数据库进行通信。 `jdbc`是Java编程语言中的一个标准API,全称为Java Database Connectivity。它提供了一种规范,允许Java应用...

    java连接timesten入门实例及jar

    Java连接Timesten数据库是Java开发中的一种特定应用,它涉及到数据库访问技术,特别是Oracle的Timesten内存数据库。Timesten是一款高性能、实时的关系型数据库管理系统,适用于需要快速处理大量数据的应用场景,如...

    Oracle TimesTen 11.2.2.8.0 for Microsoft Windows x64 (64-bit).zip

    2. **下载与解压**:下载提供的"Oracle TimesTen 11.2.2.8.0 for Microsoft Windows x64 (64-bit).zip"文件,然后使用合适的解压缩工具将其解压到指定目录。 3. **阅读readme.html**:这个文件包含了重要的安装指南...

    TimesTen学习笔记3(Timesten DataStore属性的说明)

    这篇笔记将详细探讨TimesTen DataStore属性的各个方面,帮助读者更好地理解和应用这一强大工具。 一、DataStore概述 DataStore是TimesTen数据库的核心组件,它存储了所有的数据和索引。每个DataStore都有其独特的...

    使用java调用timesten实现Oracle入库

    ### 使用Java调用TimeTen实现Oracle入库的知识点详解 #### 一、概述 本文将详细介绍如何使用Java语言来调用Oracle TimeTen内存数据库系统,并实现数据的存储操作。Oracle TimesTen是一款高性能的内存数据库管理...

    TimesTen学习笔记

    TimesTen 学习笔记 TimesTen 是一种内存数据库管理系统,主要用于实时数据处理和高速缓存。下面是对 TimesTen学习笔记的知识点总结: 一、配置数据源 * 打开 ODBC 数据源管理器,选择 TimesTen Data Manager 7.0...

    java访问timesten数据库定义.pdf

    Java 访问 TimesTen 数据库涉及一系列步骤,包括安装、配置、建表以及编写 Java 程序进行数据操作。以下是对这些知识点的详细说明: 1. **TimesTen 数据库介绍**: TimesTen 是一款内存数据库系统,由 Oracle 公司...

    timesten for windows and linux x64.rar

    【标题】"timesten for windows and linux x64.rar" 涉及的主要知识点是Oracle TimesTen In-Memory Database在Windows和Linux 64位操作系统上的安装与配置。TimesTen是一款高性能、实时的内存数据库系统,适用于需要...

    Oracle TimesTen In-Memory Database Java Developer's Guide 11g Re

    总之,Oracle TimesTen In-Memory Database Java Developer's Guide 提供了详细的指南,帮助Java开发者利用TimesTen的特性构建高性能、低延迟的应用程序,尤其适用于金融、电信和其他需要实时数据处理的行业。...

    针对timesten 内存数据库的java开发手册【pdf】

    《针对Timesten内存数据库的Java开发手册》是一份详细阐述如何在Java环境中与Oracle Timesten内存数据库进行交互的指南。Timesten是Oracle公司推出的一种高性能、低延迟的内存数据库系统,专为需要实时数据处理的...

    内存数据库timesten java驱动包

    使用java连接timesten数据库是要用到的包

    oracle timesten内存数据库文档

    8. **Oracle TimesTen Java Developer and Reference Guide**: 针对Java开发者,提供了关于使用Java API与TimesTen交互的详细信息,包括JDBC驱动、Java类库和示例代码。 9. **Oracle TimesTen Installation Guide...

    Oracle TimesTen 7.0 笔记

    Oracle TimesTen 7.0 操作、管理和编程笔记

    Timesten数据库JDBC1.6-1.8驱动包及Java连接Demo

    《Timesten数据库JDBC驱动与Java连接详解》 Oracle TimesTen In-Memory Database是一款高性能、实时的内存数据库系统,其独特的设计使得数据处理速度极快,尤其适用于需要快速响应和高事务处理量的应用场景。在Java...

    TimesTen11.2 for Linux 64bit安装

    Oracle TimesTen11.22 For Linux setup scripts manual

Global site tag (gtag.js) - Google Analytics