Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 启动并连接到数据库 » 数据库服务器 » 数据库服务器选项

 

-im 服务器选项

在内存中运行数据库服务器,减少或消除到磁盘的写入。

语法
{ dbsrv11 | dbeng11 } -im { c | nw } ...
适用于

所有操作系统和数据库服务器。

需要单独授予许可的组成部分

内存模式需要一个单独的许可。请参见单独授权的组件

注释

此功能在可用内存量较大的系统上非常有用,通常高速缓存可以容纳所有的数据库文件。可供使用的内存模式有两个:

  • 仅检查点 (-im c)   当以仅检查点模式运行时,数据库服务器不使用事务日志,所以您不能恢复到最近提交的事务。但是,由于启用了检查点日志,所以数据库可以恢复到最近的检查点。通常,当您运行不包含事务日志的数据库时,数据库服务器仍在提交时执行检查点操作,这会影响性能。但是当以仅检查点模式运行数据库服务器时,数据库服务器在每次提交后不执行检查点操作。

    对于希望增加性能的应用程序,此模式非常有用,同时允许丢失在最近检查点之后所提交的事务。

    当以仅检查点模式运行时,以下限制适用:

    1. 无事务日志。

    2. 无临时文件。

    3. 允许根据需要以及按照数据库服务器的正常检查点频率来设置检查点。

    4. 仅在检查点处将脏页刷新到磁盘中。

  • 永不写入 (-im nw)   当以永不写入模式运行时,已提交事务将不会写入磁盘上的数据库文件中。如果数据库关闭或崩溃,所有更改将丢失,因此,数据库文件将始终停留在其原始状态。允许请求扩展或创建新 dbspace,但更改不会反映在数据库文件中。可以创建并使用新的 dbspace,但是它们不会被写入磁盘。在永不写入模式下执行备份毫无用处,因为对系统 dbspace 所做的任何更改都不会写入到文件。

    当以永不写入模式运行时,以下限制适用:

    1. 无事务日志。

    2. 无检查点日志。

    3. 无临时文件。

    4. 永不将脏数据库页刷新到磁盘中。

    5. 永不修改原始数据库文件。

因为从不将更改写入到原始数据库文件,所以,如果需要当前数据库内容的持久副本,则必须使用 dbunload 实用程序或 UNLOAD TABLE 语句。还可以使用 SQL 查询来检索更改,但随后必须手动将这些更改写入到数据库文件。

从内存模式获得的性能优势取决于应用程序负载和 I/O 子系统的速度。对于插入或更新大量数据的应用程序以及频繁执行提交和检查点操作的应用程序,可获得最大性能优势。

通常,内存模式的性能等同于或优于使用事务性全局临时表时的性能。对于主要用于查询数据库的应用程序,所获得的性能优势最小。通常,在使用内存模式时,可通过将高速缓存预增加到足以容纳数据库文件全部预期内容来实现其最佳性能。这消除了在运行应用程序时增量增加高速缓存所带来的大部分开销。

小心

由于在永不写入模式下不刷新高速缓存中的页面,因此当数据库中的数据量增长过大时可能会耗尽可用高速缓存。当发生这种情况时,SQL Anywhere 会发出错误消息并停止处理请求。因此,应小心使用永不写入模式,并始终保持足够大的高速缓存以容纳应用程序可能使用的预期的全部有效页集。由于在 "仅检查点" 模式中持续出现检查点,所以与 "永不写入" 模式相比,它降低了服务器用尽可用高速缓存的风险。

对于 LOAD TABLE 语句和某些 ALTER TABLE 语句,检查点日志用于部分撤消语句失败的作用或是从错误恢复。在永不写入模式下,将不创建检查点日志,如果某些语句失败或是发生错误,则无法部分撤消这些语句的作用。表中会保留不正确或不完整的数据。请参见了解检查点日志

另请参见