- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
结果集大对象连接表事务隔离级别多版本并发控制集群 / 高可用性两阶段提交兼容性符合的标准作为WINDOWS服务运行ODBC驱动在Microsoft .NET平台上使用ACID耐久性问题使用恢复工具文件锁协议保护免受SQL注入远程访问保护限制类加载和使用安全协议SSL/TLS 连接通用唯一标识符 (UUID)设置系统属性设置服务器绑定地址可插拔文件系统限制和局限性词汇和连接
结果集
限制行数
在结果集返回给应用之前,所有记录行都已经由数据库准备好,数据库服务器目前并不支持游标,如果应用只需要结果集的前面部分行,可以通过限制结果集的尺寸提高性能,可以在查询中使用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启用该级别,可以通
文档评论(0)