H2Database講座.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
H2Database講座

结果集 限制行数 在结果集返回给应用之前,所有记录行都已经由数据库准备好,数据库服务器目前并不支持游标,如果应用只需要结果集的前面部分行,可以通过限制结果集的尺寸提高性能,可以在查询中使用LIMIT (如:SELECT * FROM TEST LIMIT 100),或者通过使用 Statement.setMaxRows(max)。 大结果集和外部排序 大的结果集将被缓存到磁盘,阀值可以通过使用语句SET MAX_MEMORY_ROWS来设置。如果使用 ORDER BY,外部排序算法将用来进行排序,在这种情况下,每块行数据使用快排序进行排序,再将其写到磁盘上,当读取数据时,块数据再被合并。 大对象 存储和读大对象 有些数据对象可能没有存放在内存中,如CLOB(文本数据类型)和BLOB(二进制数据类型),对于这些数据类型,对象并不是被全部读入内存中,而是使用数据流(stream)。存储 BLOB 对象,使用PreparedStatement.setBinaryStream,存储 CLOB,使用 PreparedStatement.setCharacterStream,读取对象 BLOB,使用ResultSet.getBinaryStream,读取 CLOB对象,使用ResultSet.getCharacterStream。当使用客户端/服务器模式时,大的 BLOB 和 CLOB对象被存储在客户端的临时文件中。 使用 CLOB/BLOB 数据库使用单独的文件存储大对象LOB (CLOB 和 BLOB)。小的LOB对象就地存储,阀值通过 MAX_LENGTH_INPLACE_LOB来设置,但都是通过上面的方法来使用CLOB/BLOB对象,因此BLOB和CLOB绝不要被使用在最大尺寸在200个字节以内的字段上,最好的阀值以来具体使用的案例。从就地存储的地方读取LOB比从文件要快,但是这将会使那些不包含这列的操作也会性能下降。 压缩大对象 CLOB 和 BLOB 的值可以使用SET COMPRESS_LOB来压缩。LZF 算法比较快,但需要更多的磁盘空间。默认情况下,通常为了提升写操作的性能,压缩都被屏蔽掉。如果存储大量的可压缩的值,如XML、HTML、text和未压缩的二进制文件,压缩可以节省大量的存储空间(有时超过50%),甚至有时读操作也会加快。 连接表 数据库支持连接表,连接表就是表并不存在于当前数据库,而是存在另外一个数据库,通过一个连接名能直接访问另外一个数据库中的表。创建一张连接表,使用 CREATE LINKED TABLE 语句: CREATE LINKED TABLE LINK('org.postgresql.Driver', 'jdbc:postgresql:test', 'sa', 'sa', 'TEST'); 可以按通常的方式去访问这张表,无论什么时候,被连接的表都能被访问,数据库通过JDBC发起连接表的查询,如上面的例子,如果发起查询 SELECT * FROM LINK WHERE ID=1,立即就发起对PostgreSQL数据库的查询: SELECT * FROM TEST WHERE ID=?,同样的规则发生在插入和更新语句中,只有简单语句能使用在目标数据库,这意味这联合查询是不允许的,预编译尽可能的被使用。 查询目标表上的执行语句,可以设置跟踪级别为3。 如果有多个连接表指向同一个数据库(使用相同的数据库URL),数据库连接是共享的,如果要屏蔽掉,可以通过设置系统属性 h2.shareLinkedConnections=false. CREATE LINKED TABLE 语句支持schema 名字作为一个可选的参数。 事务隔离级别 全部的数据库操作语句 (DML)都提供了事务隔离。大多数的数据库定义语句 (DDL) 都是直接提交当前事务的,详细看SQL语法 数据库目前支持下面的几种事务隔离级别: Read Committed 这是默认的隔离级别,使用该级别有更好的并发性。 通过使用SQL语句 SET LOCK_MODE 3 设置该事务级别,或者通过增加;LOCK_MODE=3到数据库URL中,如:jdbc:h2:~/test;LOCK_MODE=3 Serializable 启用该级别,可以通过执行SQL语句 SET LOCK_MODE 1 或者增加 ;LOCK_MODE=1 到数据库URL中,如:jdbc:h2:~/test;LOCK_MODE=1 Read Uncommitted 该级别意味着事务隔离被屏蔽。 启用该级别,通过执行SQL语句 SET LOCK_MODE 0 或者增加 ;LOCK_MODE=0 到数据库URL中,如:jdbc:h2:~/test;LOCK_MODE=0 当

文档评论(0)

xznh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档