Ibm solid db_基础
-
Upload
- -
Category
Technology
-
view
1.268 -
download
0
Transcript of Ibm solid db_基础
© 2008 IBM Corporation
IBM Software Group
IBM solidDB 基础
© 2008 IBM Corporation
主要内容
solidDB 简介
solidDB 安装、配置和工具
solidDB 常用语法与命令
操作注意事项
© 2008 IBM Corporation
solidDB 简介
© 2008 IBM Corporation
so
lid
DB
Client applications
Client RPC
TCP/IP
Server RPCApp
In-process applications
App
ODBC SA JDBC
App AppApp
In-memory tables
In-memorydb engine Disk-
baseddb engine
Disk database
Full checkpoint
Full log
Disk storage manager
Ad
vR
ep
l.
To
other
nodes
HS
B To the
standby
node
SQL engine
solidDB 架构
Client/Server:
– 网络通信
– 内嵌
SQL Engine:
– 解析器
– (基于成本)优化器
Database Engine:
– 内存表
– 磁盘表
– 内存管理和资源开销
© 2008 IBM Corporation
IBM solidDB 内存数据库
solidDB有两种数据库引擎,支持两类型的表:
– 内存表 (MME)
• 所有数据存储在内存中
• 为内存存取优化的索引结构
• 持久化或非持久化的数据
– 磁盘表 (DBE)
• 数据主要存储在磁盘中
• 活动数据被复制到内存(Cache)
• 为磁盘存取优化的索引结构
• 持久化数据
查询和事务可以同时跨越两种类型的表。表类型对应用和用户透明
IBM solidDB
M-tables
SQL engine
In-memorydb engine
Disk storage manager
Disk-based
db engine
Cache
磁盘数据库完全 checkpoint
事务日志
© 2008 IBM Corporation
solidDB 支持的表类型
表类型 特点 创建方式
持久型内存表
内存表默认类型,支持Log和Checkpoint持久化机制;
支持行级锁、表级锁和事务隔离级别
CREATE TABLE tab_name (col_1
INT, xxxx) STORE MEMORY
或DefaultStoreIsMemory=Yes
全局临时内存表
所以数据存储在内存中,没有磁盘映象;不支持Log和Checkpoint持久化机制;
支持行级锁、表级锁和事务隔离级别;全局可见
数据不复制到HSB的备节点;
CREATE TRANSIENT TABLE
tab_name (col_1 INT, xxxx)
局部临时内存表
所以数据存储在内存中,没有有磁盘映象;不支持Log和Checkpoint持久化机制;
不支持行级锁,会话级可见;
数据不复制到HSB的备节点
CREATE TEMPORARY TABLE
tab_name (col_1 INT, xxxx)
持久型磁盘表
数据存储在磁盘中,支持Log和Checkpoint持久化机制;
支持行级锁、表级锁和事务隔离级别;
CREATE TABLE tab_name (col_1
INT, xxxx) STORE DISK
或DefaultStoreIsMemory=No
© 2008 IBM Corporation
ODBC
App
SA
App
Client RPC
TCP/IP
so
lid
DB
In-memory tables
SQL engine
Server RPC
In-memorydb engine
Disk storage manager
Flo
wDisk-based
db engine
HS
B
JDBC
App
App (C/Java/SA)
In-process application
编程接口
solid JDBC Driver:
– 用于Java应用程序
– 完全兼容JDBC 标准
– JDBC2.0
solid ODBC Driver:
– 比JDBC快30%-50%
– solidDB最常用的驱动– ODBC3.51
solid API (SA):
– 比ODBC快30%-50%
– 单表访问
solidDB Linked Libraries:
– JDBC,ODBC 或 SA
© 2008 IBM Corporation
TRANSACTION
Committing a Transaction
SOLnnnnn.LOG
BufferPool
solid.db
数据库引擎 - 事务管理
事务:
– 作为一个整体,一组操作被提交(保存)或回滚(取消)
– 可能同时包含内存表和磁盘表
提交事务:
– 变化数据被持久化
– 变化数据对其他用户变成可见
事务日志:
– 存储已提交的事务
– 保证数据库在异常关闭情况下的事务一致性
© 2008 IBM Corporation
Server2
Standby
Txn
Log
Application
Connected
HSBServer1
Active
Txn
Log
热备份复制
solidDB HSB 双机架构
Server2
Active
Connected
© 2008 IBM Corporation
solidDB 安装、配置和工具
© 2008 IBM Corporation
安装solidDB
Windows平台上安装
– 运行安装程序 (.exe) ,根据界面提示执行安装
Linux/Uinx平台上安装
– 无需专有的用户组和用户
– solidDB6.1:运行安装程序(.bin),安装程序在当前路径下自动完成
– solidDB6.3:运行./solidXXX.bin -i console,根据提示执行安装• 需要JER
升级补丁– 解压后移动以下文件到solidDB的安装路径
*.lib --> SOLIDDIR\lib
*.h --> SOLIDDIR\include
*.dll *.so --> SOLIDDIR\bin
sol* --> SOLIDDIR\bin
SolidDriver2.0.jar --> dbdir\jdbc
© 2008 IBM Corporation
配置与操作 – 定义数据库工作目录
solidDB 数据库工作目录,是一个数据库实例的根目录
数据库工作目录必须包含:
– solid.lic (solidDB许可证文件)
• solid.lic不合法,导致数据库无法启动
– solid.ini (solidDB配置文件)
• 未提供solid.ini,数据库将全部使用默认参数
指定工作目录的方法
– -c 参数
– eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone
工作目录包括:
– solmsg.out (solid消息文件),soltrace.out…
– (不一定包含数据库文件)
© 2008 IBM Corporation13
配置 solidDB
solid.ini 文件
– 存放在数据库的工作目录
定义solidDB最常用的参数
– 数据文件、日志文件和排序文件的路径
– 通信参数设置
– 内存的使用
– 定时命令
典型地,很小部分参数需要设置
– 缺省值适用大多数场合
solid.ini
[IndexFile]
FileSpec_1=c:\solid\db\solid.db 2GB
CacheSize = 32M
[Logging]LogEnabled = YesLogDir =c:\data\logsDurabilityLevel = 1
[General]BackupDirectory=e:\solbackup
[Com]Listen=tcp 1313, shm solid
[Sorter]TmpDir_1 = c:\temp
[Srv]At=20:30 makecp, 21:00 backup, sun 23:00 shutdown
© 2008 IBM Corporation
由方括号定义的命名进行参数分类:
– [Com], [General], [Index File], [Logging], [Srv],...
参数句法:
– <param_name>=<param_value>
允许空格
不区分大小写
分号后面的内容是注释
– ; This is a comment
– <param_name>=<param_value> ; This is also a comment
在solmsg.out参考告警信息
配置 – 在solid.ini设置参数
© 2008 IBM Corporation
基本操作 – 启动solidDB
创建并启动数据库命令solid –c workingdir -U username –P password –C catalog
eg: solid –c /usr/local/soliddb-6.1/eval_kit/standalone
–U radius –P radiussolid –c dir
检查solid.lic
检查solid.ini
数据库文件是否存在
启动数据库
创建数据库
是
否
装载内存表
自动恢复
打开数据库
启动数据库
– 如果数据库已经存在,启动数据库的命令为:
solid –c workingdir
© 2008 IBM Corporation
基本操作 – 关闭solidDB
正确关闭数据库的方法
– 在管理工具(solcon, solsql)执行关闭命令
– 关闭数据库服务器图标(Windows)
推荐步骤
– 阻止建立新连接:close
– 退出当前所有用户:throwout all
– 停止 solidDB进程:shutdown
异常关闭不会破坏数据库,但会导致下次启动时间更长
– 异常掉电
– 系统异常宕机
ADMIN COMMAND ‘close';
ADMIN COMMAND ‘throwout all';
ADMIN COMMAND 'shutdown';
ADMIN COMMAND 'shutdown force';
© 2008 IBM Corporation
数据管理工具
solidDB提供以下工具
– solidDB Remote Control - solcon
– solidDB SQL Editor - solsql
– solidDB Data Dictionary - soldd
– solidDB Export - solexp
– solidDB SpeedLoader – solload
使用 - h 查看工具的选项
© 2008 IBM Corporation
工具:Solid SQL Editor - solsql
功能
– 执行所有管理命令:ADMIN COMMAND „com_name‟;
– SQL 语句、SQL 脚本
用法
– 登录数据库:solsql " tcp 192.168.1.100 1315" username password
– 运行脚本:solsql "tcp 1315" username password test.sql
– 外部执行:solsql -e"ADMIN COMMAND status" "tcp 1315"
username password
– 注意,在solsql中要执行commit work;显示提交事务
solsql 选项
– -h 查看所有选项
– -t 显示执行时间
– -a 自动提交
© 2008 IBM Corporation
工具:Solid Remote Control - solcon
功能
– 执行所有管理命令
– 等同于 ADMIN COMMANDs
权限要求
– SYS_ADMIN_ROLE 或 SYS_CONSOLE_ROLE
用法
– solcon " tcp 192.168.1.2 1315" username password
– solcon -e"status" "tcp 1315" dba dba
solcon选项
– solcon -h
© 2008 IBM Corporation
工具: solexp数据导出工具
表数据导出
– solexp [options] [listen-name] <username> <password> <table|*>
整表导出:solexp "tcp 1315" dba dba FOO
条件导出:solexp -e“select id, name from FOO where id > 100” "tcp 1315" dba dba FOO
导出结果:
– 当前目录下生成两个文件:
• 控制文件*.ctr,如DBA_FOO.ctr。(导入数据时需要使用控制文件)
• 数据文件*.dat,如DBA_FOO.dat。(实际数据)
常用选项:
– solexp -h 帮助信息
– solexp -e 导出时执行-e后面的语句
© 2008 IBM Corporation
工具: solload数据导入工具
数据导入
– solload [options] [listen-name] <username> <password> <control-file-name>
solload -b 2000 -t “tcp 1315” dba dba DBA_FOO.ctr
常用选项
– -h 帮助信息
– b<records> 批量提交的行数,默认为1
– -x errors:<count> 允许错误次数,默认为50
– -x skip:<records> 跳过行数
– -t 结束后打印时间
注意事项
– 一定要使用-b选项,建议2000行提交一次
– 数据导入时检查数据唯一性和合法性
• 必要时,增大“允许错误”次数
LOAD DATA
INFILE 'DBA_FOO.dat'
INTO TABLE "DBA"."FOO"
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY "'"
(
"ID" INTEGER NULLIF NULL,
"NAME" CHAR(30) NULLIF NULL
)
DBA_FOO.ctr
© 2008 IBM Corporation
工具: soldd 数据字典工具
数据字典
– 将数据库的模式导成文本
• 表、视图、存储过程、序列
– soldd [options] [listen-name] <username> <password>
• soldd “tcp 1315” dba dba
结果
– 在当前目录下生成soldd.sql,改文件包含表、索引、存储过程、触发器等的创建语句
© 2008 IBM Corporation
solidDB常用语法和命令
© 2008 IBM Corporation
基本操作 – solsql
在solsql执行
– 运行SQL语句,SQL脚本
– 允许管理命令:admin command „cmd_name‟;
– 语句以分号结束
– 需要显示提交事务或回滚事务
• Commit work;
• Rollback work;
© 2008 IBM Corporation
数据库消息文件 - solmsg.out
------------------------------------------------------------
2009-05-30 12:35:14
Version: 06.10.0014
Operating system: Windows XP MT
Warning: Unrecognized entry in inifile: Srv.TraceFileSize
Warning: 1 unrecognized, illegal or deprecated entry in 'solid.ini'.
IBM solidDB - v.06.10.0014 (Windows XP MT)
(c) Solid Information Technology Ltd. 1993, 2008
Using license file C:\3Program\solidDB6.1\eval_kit\standalone\solid.lic
IBM solidDB 6.1
Using configuration file C:\3Program\solidDB6.1\eval_kit\standalone\solid.ini
Finished loading IMDB. Pages: 9
Starting roll-forward recovery, please wait ...
Recovery successfully completed
2009-05-30 12:35:16 IBM solidDB - Standalone started at 2009-05-30 12:35:16
2009-05-30 12:35:16 Listening of 'TCP/IP 2315' started.
2009-05-30 12:35:16 Database started.
2009-05-30 12:35:19 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1).
2009-05-30 13:11:28 User 'TCP 2315' tried to connect from huangqs (127.0.0.1) with an illegal
username or password.
2009-05-30 13:11:39 User 'DBA' connected, user id 5, machine id huangqs (127.0.0.1).
2009-05-30 14:12:10 Checkpoint creation started
2009-05-30 14:12:11 Checkpoint creation completed
配置参数错误
许可证和配置文件
回滚(非正常关闭)
© 2008 IBM Corporation
监控和管理solidDB
最常用的管理命令
– 数据库状态: admin command 'status';
– 内存开销: admin command 'memory';
– 磁盘空间: admin command 'info logsize dbsize dbfreesize dbconfigsize ';
– 当前用户列表: admin command 'userlist';
– 当前用户详细信息: admin command 'userlist -l';
– 指定用户详细信息: admin command 'userlist -l uid';
– 断开指定的用户: admin command 'throwout [uid|all]';
– 运行时间最长的SQL:admin command 'sqllist [top 1..20]„
– 状态报告:admin command 'report <file_name>';
– 运行跟踪:admin command 'monitor on/off [user {username | uid}]';
– 详细状态定时跟踪:• admin command 'perfmon diff start filename interval ';
• admin command 'perfmon stop';
© 2008 IBM Corporation
监控和管理solidDB (续)
最常用的管理命令
– 查看配置参数:
• admin command 'parameter';
• admin command 'parameter section_name';
• admin command „parameter section_name.para_name';
– 查看参数描述:admin command 'describe parameter
section_name.para_name'
– 修改参数: admin command 'parameter
section_name.para_name=new_value ';
– 手动备份: admin command 'backup [-s] [backup directory]';
– 查看备份历史记录 : admin command 'backuplist';
– 查看备份状态 : admin command 'status backup';
– 修改“定时任务”参数配: admin command 'par srv.at= time_para1
command1, time_para2 command2';
© 2008 IBM Corporation
监控和管理solidDB (续)
HSB 常用命令
– 查看HSB状态:admin command „hsb state';
– 手动切换HSB状态:
• PRIMARY ALONE: admin command „hsb set primary alone';
• SECONDARY ALONE: admin command 'hsb set secondary alone';
• PRIMAYR ACTIVE: admin command 'hsb switch primary';
• SECONDARY ACTIVE: admin command 'hsb switch secondary';
© 2008 IBM Corporation
数据库状态: admin command 'status';
© 2008 IBM Corporation
内存开销: admin command 'memory';
Memory:
– 数据库内存开销
Info imdbsize
– 内存表内存开销
– 单位:KB
© 2008 IBM Corporation
磁盘空间:admin command 'info logsize dbsize dbfreesize dbconfigsize ';
磁盘开销
– 其中logsize和dbsize分别表示当前日志文件和数据文件的大小,dbfreesize是在当前的dbsize中还能重用的磁盘空间。
– logsize、dbsize和dbfreesize的单位是KB, dbconfigsize是MB。
– solidDB数据文件使用率计算公式是:数据文件使用率(%) = (dbsize-
dbfreesize)/1024/dbconfigsize*100
© 2008 IBM Corporation
当前用户列表: admin command 'userlist';
当前用户列表:
– 包括用户名、用户ID、连接类型、客户端机器ID、登录时间
– 可缩写为: admin command 'ul';
– 连接类型:
• ODBC -- ODBC驱动,常用于C/C++程序
• Java – JDBC驱动,常用于Java程序
• SQL – solsql命令行连接
© 2008 IBM Corporation
当前用户详细信息: admin command 'userlist -l';指定用户详细信息: admin command 'userlist -l uid';
用户详细信息
– 包含用户相关的详细信息
– 该命令对数据库分析非常有帮助
– 缩写:
• admin command 'ul -l uid';
© 2008 IBM Corporation
断开指定的用户: admin command 'throwout [uid|all]';
断开指定的用户
– „throwout all‟ 不断开自身连接
– 断开连接后,正在运行的事务被终止
• 常用于终止事务
© 2008 IBM Corporation
运行时间最长的SQL:admin command 'sqllist [top 1..20]';
运行时间最长的SQL
– 用于定位哪些SQL运行时间最长
– 了解该SQL的状态
© 2008 IBM Corporation
状态报告:admin command 'report <file_name>';
状态报告
– 报告数据库当前详细状态
• 数据库状态快照
– 默认在工作目录下生成文件
– 报告问题时,请附上状态报告文件
© 2008 IBM Corporation
运行跟踪:admin command 'monitor on/off [user {username | uid}]';
跟踪数据库
– 打开数据库的Trace开关,用于监控数据库执行的具体操作。开关打开后,在数据库工作目录生成soltrace.out文件。可以执行username或者userid进行过滤跟踪。
– 注意:打开Trace开关将严重影响数据库的性能,该命令只在只在分析定位问题时才使用,使用完成务必执行’monitor off’进行停止跟踪。
– 注意:跟踪完成后,需要执行‟monitor off‟停止跟踪
© 2008 IBM Corporation
详细状态定时跟踪
详细状态定时跟踪:
– 启动:admin command 'perfmon diff start filename interval';
eg: admin command 'pmon diff start pmon_1.txt 2000';
– 停止:admin command 'perfmon stop';
检查数据库负载:
– admin command „pmon‟; (如下图)
© 2008 IBM Corporation
查看配置参数:admin command 'parameter';
查看配置参数:
– admin command 'parameter';
– admin command 'parameter section_name';
– admin command 'parameter section_name.para_name';
© 2008 IBM Corporation
查看参数描述,修改参数
查看参数描述:
– admin command 'describe parameter section_name.para_name';
修改参数:
– admin command 'parameter section_name.para_name=new_value';
– 注意:请勿随意修改参数
© 2008 IBM Corporation
手动备份:admin command 'backup [-s] [backup_directory]';
手动备份:
– 如果已经配置[General]. BackupDirectory,则可以在solsql命令行执行 ADMIN
COMMAND „backup [-s]„;
– 如果未配置[General].BackupDirectory,或计划备份数据库到另一个路径,则可以在solsql执行ADMIN COMMAND „backup [-s] backup_directory‟;,
• 如 ADMIN COMMAND „backup -s /export/home/backupdata‟;。
– -s是可选项,如果使用-s选项,则备份命令需要等待备份完成后才返回。
– 注意:如果backup_directory目录不存在,备份不成功
– 注意:尽量不要在数据库文件所在的物理磁盘备份数据库
– 注意:数据库在线时,copy数据文件不等于备份数据库
• – copy方式导致复制出来的文件不可用
© 2008 IBM Corporation
查看备份历史记录: admin command 'backuplist';查看备份状态: admin command 'status backup';
查看备份状态:– admin command 'status backup';
• SUCCESS、ACTIVE、FAILED
查看备份历史记录:– admin command 'backuplist';
© 2008 IBM Corporation
修改“定时任务”参数配
修改“定时任务”参数配 :– admin command „par srv.at= time_para1 command1, time_para2 command2‟;
– 支持“定时”命令• backup
• throwout
• makecp
• shutdown
• report
• open
• Close
– 常用于定时备份(如下图)– 注意:修改“定时任务”参数配置立刻生效。请详细参考<Administrator Guide.pdf>的
[3.14Entering Timed Commands]
At = At_string
At_string ::= timed_command [,timed_command ]
timed_command ::= [ day ] HH:MM argument
day ::= sun | mon | tue | wed | thu | fri | sat
© 2008 IBM Corporation
查看HSB状态:admin command 'hsb state';
HSB状态
– PRIMARY ACTIVE:
• HSB数据库处于正常连接状态
• 数据库能处理读/写事务
• 数据库正在发送数据到备数据库
• 备数据库一定是SECONDARY ACTIVE 状态
– PRIMARY ALONE:
• HSB 数据库处于断开连接状态
• 对端数据库可能是SECONDARY ALONE 状态
• 数据库能处理读/写事务
• 数据库以后可能需要发送事务到备数据库
– PRIMARY UNCERTAIN:
• HSB 数据库处于断开连接状态
• AutoPrimaryAlone 配置参数设置成 No
• 未确认的事务处理处于等待状态
© 2008 IBM Corporation
查看HSB状态:admin command „hsb state‟;(续)
HSB状态
– SECONDARY ACTIVE:
• HSB数据库处于正常连接状态
• 数据库正在接收从主数据库传过来的事务日志数据
• 这些事务被重做,以重现主数据库的事务数据
• 这些事务会写入数据库的事务日志文件
• 客户端能该数据库执行只读事务
• 对端数据库一定是PRIMARY ACTIVE 状态
– SECONDARY ALONE:
• HSB 数据库处于断开连接状态
• 能接收只读事务
• 通过在主数据库执行ADMIN COMMAND „HSB connect‟,数据库能主数据库建立连接
• 如设置了[HotStandby] HSBEnabled=Yes,数据库启动后总是该状态
© 2008 IBM Corporation
手动切换HSB状态
手动切换HSB状态:
– PRIMARY ALONE: admin command 'hsb set primary alone';
– SECONDARY ALONE: admin command 'hsb set secondary alone';
– PRIMAYR ACTIVE: admin command 'hsb switch primary';
– SECONDARY ACTIVE: admin command 'hsb switch secondary';
– 注意:切换状态后需要执行commit work;
© 2008 IBM Corporation
注意事项
© 2008 IBM Corporation
注意事项
任何更新操作(事务)需要显式提交或回滚
– Commit work;
– Rollback work;
尽量避免修改大量数据
事务操作都是需要记录日志的,大事务可能引起内存开销过大
用存储过程代替,小批量操作(如200行一提交)
或用truncate table代替
尽量避免复杂SQL查询
– solidDB数据库更适合小事务、大并发的事务场景
• 如:select username from radcheck where
attribute = „abc‟ and username in
(select username from radcheck group by username having count(*) > 2); 性能不理想
– 用存储过程代替
© 2008 IBM Corporation
注意事项 (续)
备份操作注意事项
– 如果backup_directory目录不存在,备份不成功
– 尽量不要在数据库文件所在的物理磁盘备份数据库
• 导致备份时间过长
• 无法避免磁盘损坏引起的故障
– 数据库在线时,copy数据文件不等于备份数据库
• copy方式导致复制出来的文件不可用
建议使用admin command ‘throwout uid’;终止长时间运行的事务,特别是“写”事务
– 如果想终止只读操作,Ctrl+C也是可行的
– 如果想终止写操作,请使用admin command „throwout uid‟;将用户踢出去,并回滚事务