SinoDB创建数据库及注意事项

  在创建SinoDB数据库时需要注意以下几点:

一、建库注意事项:

1. 选择合适的数据库名称

  • 数据库名称对于数据库服务器实例必须是唯一的

  • 最多128个字符;

  • 合法的名字包括:
    字母:A 至 Z, a 至 z
    数字:0 至 9
    下划线 (_)

2. 确定数据库日志模式

  数据库日志用来记录内存中逻辑日志缓存区中的事务信息,然后刷新逻辑日志缓冲区至磁盘上的逻辑日志文件中。我们需要为数据库选择合适的日志模式。有以下4种类型的日志模式:

①No Logging

  • UPDATE、 INSERT、 DELETE 记录不会写入逻辑日志;

  • DDL操作与数据库管理活动仍然会写入逻辑日志;

  • 不支持事务。

②Unbuffered Logging

  • 所有语句都会写入逻辑日志,并且通过COMMIT WORK语句随后刷新到磁盘上;
  • 由于每一次提交事务都会导致缓冲区被刷新到磁盘上,所以增加了磁盘I/O。

③Buffered Logging

  • 所有语句都会写入逻辑日志,逻辑日志缓冲区变满时,内存中的逻辑日志才会被刷新到磁盘中的逻辑日志中。
  • 优点是减少执行的磁盘I/O数量,提高数据库性能。
  • 缺点是万一系统崩溃,逻辑日志缓冲内的所有信息都无法写入磁盘中,会造成数据丢失。

④MODE ANSI

  • MODE ANSI 数据库总是使用unbuffered logging且日志不能被禁用。
  • 所有 SQL 语句都暗含在事务中,所以可以不用写BEGIN WORK;
  • 所有者命名是强制性的(必须完整写informix.table);
  • MODE ANSI 数据库的缺省隔离级别是repeatable read,会影响并行访问数据的性能;
  • 缺省表和同义词特权不会授予用户 PUBLIC;
  • 将数据库设置为 ANSI模式后,就不能再转换为其他模式。

3. 数据库所在的dbspace

  当创建一个数据库时,需要为数据库指定一个 dbspace。这个 dbspace 也是数据库中其他表的缺省 dbspace。 如果没有指定数据库dbspace,数据库则默认建在root dbspace中,将不利于数据库的管理,也会影响数据库实例的性能。

4. 数据库使用的字符集

  在建库之前,需要确定数据库所采用的字符集。SinoDB数据库默认的字符集为en_US.8859-1。在创建数据库之前,先通过环境变量设置数据库字符集,再进行建库操作:

export DB_LOCALE=en_US.8859-1
export CLIENT_LOCALE=en_US.8859-1

二、建库示例:

  • 在 dbspace db_dbs 中创建一个no logging数据库

create database db in db_dbs;

  • 在 dbspace db_dbs 中创建unbuffered logging数据库

create database db in db_dbs with log;

  • 在 dbspace db_dbs 中创建buffered logging数据库

create database db in db_dbs with buffered log;

  • 在 dbspace db_dbs 中创建MODE ANSI数据库

create database db in db_dbs with log mode ansi;

三、更改数据库的日志模式

  可以使用 ondblog 或 ontape 来添加或更改日志记录。然后使用 ON-Bar 或 ontape 来备份数据。

1. ontape更改数据库日志模式

  • 将数据库db转为no logging模式,创建0级备份

ontape –s –L 0 –N db

  • 将数据库db转为unbuffered logging模式,创建0级备份

ontape –s –L 0 –U db

  • 将数据库db转为buffered logging模式,创建0级备份

ontape –s –L 0 –B db

*将数据库db转为MODE ANSI模式,创建0级备份

ontape –s –L 0 –A db

2. ondblog更改数据库日志模式

  使用ondblog更改数据库模式,需要在0级备份后才生效。

  • 将数据库db转为no logging模式

ondblog nolog db

  • 将数据库db转为unbuffered logging模式

ondblog unbuf db

  • 将数据库db转为buffered logging模式

ondblog buf db

*将数据库db转为MODE ANSI模式

ondblog ansi db

四、sysmaster表:sysdatabases与sysdbslocale

1. sysdatabase

  sysdatabases 表会为每一个创建的数据库保存一行信息,可以该表来查看数据库的日志模式,是否大小写敏感等信息。

[informix@vm84145 ~]$ dbaccess sysmaster -

Database selected.

> select * from sysmaster:sysdatabases;


name            sysmaster
partnum         1048580
owner           informix
created         01/31/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12279

name            testdb02
partnum         9437197
owner           informix
created         03/27/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12287

name            sysuser
partnum         1048951
owner           informix
created         02/14/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255

name            sysadmin
partnum         1048694
owner           informix
created         02/14/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255

name            testdb
partnum         9437696
owner           informix
created         06/16/2022
is_logging      1
is_buff_log     1
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12285

name            testdb3
partnum         9437449
owner           informix
created         10/18/2022
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12287

name            sysutils
partnum         1049126
owner           informix
created         01/31/2023
is_logging      1
is_buff_log     0
is_ansi         0
is_nls          0
is_case_insens  0
flags           -12255


2. sysdbslocale

  sysdbslocale 表保存每个数据库的字符集信息。

> select * from sysdbslocale;



dbs_dbsname  sysmaster
dbs_collate  en_US.819

dbs_dbsname  testdb02
dbs_collate  zh_CN.57372

dbs_dbsname  sysuser
dbs_collate  en_US.819

dbs_dbsname  sysadmin
dbs_collate  en_US.819

dbs_dbsname  testdb
dbs_collate  zh_CN.57372

dbs_dbsname  testdb3
dbs_collate  en_US.819

dbs_dbsname  sysutils
dbs_collate  en_US.819