汽修软件-汽配软件-汽修厂用首佳汽修汽配管理软件系统管理汽修厂

2007年04月11日

Sybase Adaptive Server Enterprise数据库优化实战案例

类归于: 其它软件技术分享 — 标签:, , — 汽修汽配管理软件 @ 2:03 上午

1    数据库安装的优化
1.1       应用数据库使用裸设备
若 在UNIX(UNIXWARE)操作系统下安装数据库服务器,请将SYBASE应用数据库的设备(device)安装成裸设备。即在创建应用数据库设备 (如:IVSP,DB160,NAP2000等)时用裸设备,把文件名指向 /dev/dsk/ 子目录下的相应文件。系统数据库设备(如:master等)仍然指向文件系统。
1.2    补丁程序
完成SYBASE数据库的安装,请注意原版的SYBASE软件都会带有最新的补丁,一定要把补丁打上,否则会出现一些莫名其妙的问题。FOR NT 版的补丁是一个ZIP文件,解压至C:\\SYBASE子目录即可。
1.3    安装 SYBASE 在线帮助
在安装好 SYBASE 后,在安装目录下有一文件:../scripts/ins_syn_sql,在服务器上执行该脚本:
Sybase for Unix版:     ./isql -Usa -P -i../scripts/ins_syn_sql
Sybase for Winnt版: isql -Usa -P -i\\sybase\\scripts\\ins_syn_sql
执行完毕后,即可在任意的 SYBASE 客户端上连接上 SQL SERVER ,在线取得任意命令的帮助:
sp_syntax “关键字”
如: sp_syntax “alter” 即可列出所有包含”alter”字符的命令
2    数据库配置的优化
2.1    优化master数据库
首先加大master设备空间,初始默认为30M,加大为150M。然后加大master数据库空间,默认数据段和日志段各为5M大小,建议改为数据段100M,日志段50M。
alter database master on master=95
2.2    优化tempdb数据库
首先创建tempdb设备,分配给tempdb数据库,默认tempdb数据库数据段和日志段各为2M大小,并创建在master设备上,建议改为数据段200M,日志段50M,创建在tempdb设备上。
alter database tempdb on tempdb=200

SQL SEVRER所有用户都共享工作表和临时表的tempdb数据库,tempdb主要瓶颈是磁盘I/0。解决办法是把tempdb放在更快的设备上。在 UNIX环境中,把tempdb放在文件系统中而不用原始的设备。由于tempdb在创建数据时,自动在master设备上创建为2M的数据库,为了减少 冲突,最好的办法是把tempdb从master设备中移走。为了达到上述目的,可采用如下办法实现:

1:在单用户状态下启动SQL SERVER
启动单用户方法:dataserver -dmaster.dat -m
2:以sa登录
3:在文件系统中创建一个哑数据库。
4:删除sysusages和 sysdatabase表中对现有tempdb数据库的引用
5:获取哑数据库的数据库ID,相应修改sysusages和 ysdatabase表对tempdb的引用
6:重新启动数据库
以在newdevice中创建200M的tempdb数据库为例,执行过程如下:
create database newtemp on newdevice=200
go /* 创建新的数据库 */
begin tran
go /* 开始事务,防止操作错误时破坏整个SQL SERVER的运行*/
delete sysusages where dbid = 2
delete sysdatabases where dbid = 2
go /*删除系统表对tempdb的引用,只能在单用户状态下执行*/
select dbid from sysdatabases where name = ‘newtemp’

go /*获取newtemp数据库ID,假定为10*/

update sysusages set dbid = 2 where dbid=10

update sysdatabases set name=’tempdb’,dbid=2 where name=’newtemp’

go /*修改数据库的引用,对newtemp的引用改为对tempdb的引用*/

select name,dbid, from sysdatabases where name = ‘tempdb’

select * from sysusages where dbid = 2

go /*测试修改是否正确,正确则提交,否则可用rollback回退*/

commit tran

go /*修改成功,重新启动系统*/

这种方法只对tempdb有效,其他数据库不能采用这种方法。因为在SQL SERVER启动时,tempdb每次都重新初始化。
2.3    优化系统参数
以下参数为标准建议值,可根据实际情况修改。
优化系统参数的SQL脚本 注释
sp_configure \’total memory\’, 100000 优化数据库的内存,应根据不同机器配置设置, 建议为一半的物理内存大小。以db_block为单位,即每个单位为2k,上例为200M,默认为24M.
sp_configure “lock scheme” , 1,”datarows” 系统默认为表级锁,优化为行锁
sp_configure “number of locks” , 10000 加大最大锁进程数, 默认为5000。
(如果设置一个已经存在的表(tabel)的锁方式为行锁,则执行:
alter table table_name lock datarows)
sp_configure \’procedure cache percent\’ ,30 缺省值:20 建议值:procedure使用频率高时采用较大的值,不超过30
sp_configure “number of user connections”,100 最大用户连接数,默认为25,每个连接要占70k内存
sp_configure \’number of devices\’,20 将最大设备文件数据改为15个
sp_configure ‘number of Open databases’,20 最大打开数据库个数,对于需在一台数据库服务上打个多个数据库则需加大此参数,默认为15
Sp_configure ‘max online engines CPU’,2 缺省值:1 建议值:采用实际机器的CPU个数
Sp_configure ‘total data cache size’,60000 缺省值:0 建议值:使用SQL SERVER内存的30%
如果上述参数改动后SYBASE启动不正常,则可检查SYBASE的错误日志,把SYBASE.cfg中的相应选项修改为较小的值。
附:SYBASE SQL SERVER 内存的分配
1. SQL SERVER 可执行代码 3-4M
2. SQL SERVER 使用的静态内存 2.2-3.25M
3. 用户可配置的参数所占用内存,以下示例(11.9.2版):
默认值 占用内存
用户连接数(user connections) 25 每个 约70k
打开的数据库数(open database) 12 每个 约60k
打开的对象数(open objects) 500 每个 约1k
打开的索引数(open indexs) 500 每个 约1k
锁数目(locks) 5000 每个 约0.1k
数据库设备数(data device) 10 每个 约0.5k
4. 剩余部份分配给
过程缓存 ( 由 procedure cache percent 决定,默认值为 20% )
数据缓存 ( 默认值为减去1、2、3项的 80% )
2.4    优化数据库系统属性
在sybase center中选择数据库属性,将属性中options选项中的下列项目选中。
allow select into/bulk copy
truncate log on checkpoint
checkpoint on recovery
abort transction on full log
free space accounting
allow nulls by default
auto identity column in non-unquie index
方法二:在SQLPLUS中执行下列SQL脚本
如:
sp_dboption mydb,”abort tran on log full”,true(设定当数据库的日志空间满时,就终止该进程,使用 sa 用户)
sp_dboption mydb,” select into/bulkcopy “,true
sp_dboption mydb,” trunc log on chkpt “,true
sp_dboption mydb,” no chkpt on recovery”,true
sp_dboption mydb,” no free space acctg “,true
sp_dboption mydb,”allow nulls by default”,true
sp_dboption mydb,” auto identity dbo use only “,true
2.5    创建阈值存储过程
可根据不同的应用修改以下脚本或创建多个阈值存储过程,并在配置阈值时指定相应的存储过程。
create procedure sp_thresholdaction
@dbname varchar(30),@segmentname varchar(30), @free_space int,@status int
as dump transaction @dbname with no_log
print “LOG DUMP: \’%1!\’ for \’%2!\’ dumped”,@segmentname,@dbname
go
2.6    配置多个阈值
方法一:
打开 Sybase Central,双击相应数据库(database)的段 Segments ->; logsegment,在 Thresholds 页面中可设置自动清除日志的阀值。其中有 Last Chance 的一行是系统默认的最后机会阀值,即系统日志空闲空间小于该值时为最后一次自动清除日志的机会。设置时阀值的大小可设为日志总空间大小的20%左右。
另外再增加多个阈值。
方法二:
1、使用如下指令查出数据库中日志的容量(用页表示)
select sum(size) from master..sysusages where dbid=db_id(“database_name”图片点击可在新窗口打开查看 and (segmap&4)=4
2、使用sp_addthreshold增加新的阈值,大小为日志容量的50%,如上面语句显示值为2048
sp_addthreshold database_name,logsegment,1024,proc_dump_display
注意:因一个大事务时可能会越过当前的threshold,所以必须加多个threshold,
使用命令select @@thresh_hysteresis查看数据库的滞后值,如结果为64页,则下一个阈值设为”最近的阈值-(2*64)”,请在所设阈值再按这种原则各增加两个更小的阈值。
3    索引的优化
在良好的数据库设计基础上,需高效地使用索引,并经常的维护索引,下文介绍关于索引的相关内容。
3.1    创建索引
索引分为三类:聚簇索引(clustered indexes)、非聚簇索引(nonclustered indexes)、覆盖索引(covering indexes)
鉴于索引加快了查询速度,但减慢了数据更新速度的特点。可通过在一个段上建表,而在另一个段上建其非聚簇索引,而这两段分别在单独的物理设备上来改善操作性能。
create [unique][clustered|nonclustered] index index_name on table_name(column_name…)
3.2    重建索引
随着数据行的插入、删除和数据页的分裂,有些索引页可能只包含几页数据,另外应用在执行大块I/O的时候,重建非聚簇索引可以降低分片,维护大块I/O的效率。重建索引实际上是重新组织B-树空间。在下面情况下需要重建索引:
(1)、数据和使用模式大幅度变化。
(2)、排序的顺序发生改变。
(3)、要进行大量插入操作或已经完成。
(4)、使用大块I/O的查询的磁盘读次数比预料的要多。
(5)、由于大量数据修改,使得数据页和索引页没有充分使用而导致空间的使用超出估算。
(6)、dbcc检查出索引有问题。
当重建聚簇索引时,这张表的所有非聚簇索引将被重建.
3.3    索引统计信息的更新
当在一个包含数据的表上创建索引的时候,SQL Server会创建分布数据页来存放有关索引的两种统计信息:分布表和密度表。优化器利用这个页来判断该索引对某个特定查询是否有用。但这个统计信息并不 动态地重新计算。这意味着,当表的数据改变之后,统计信息有可能是过时的,从而影响优化器追求最有工作的目标。因此,在下面情况下应该运行update statistics命令:
(1)、数据行的插入和删除修改了数据的分布。
(2)、对用truncate table删除数据的表上增加数据行。
(3)、修改索引列的值。
4    查询优化
4.1    NOT IN子句
不知大家是否喜欢使用‘NOT IN’这样的操作,如果是,那尽量使用(NOT) EXISTS 替代。
例子:
语句1
SELECT dname, deptno FROM dept   WHERE deptno NOT IN (SELECT deptno FROM emp);
语句2
SELECT dname, deptno FROM dept WHERE NOT EXISTS (SELECT deptno FROM emp WHERE dept.deptno = emp.deptno);
明显的,2要比1的执行性能好很多,因为1中对emp进行了full table scan,这是很浪费时间的操作。而且1中没有用到emp的index,因为没有where子句。而2中的语句对emp进行的是range scan。
4.2    海量查询
在海量查询时尽量少用格式转换。
如用
WHERE a.order_no = b.order_no
而不用
WHERE TO_NUMBER (substr(a.order_no, instr(b.order_no, \’.\’) – 1)= TO_NUMBER (substr(a.order_no, instr(b.order_no, \’.\’) – 1)
3)查询海量数据是可以使用optimizer hints,例如/*+ORDERED */

SELECT /*+ FULL(EMP) */ E.ENAME FROM EMP E WHERE E.JOB = \’CLERK\’;
而不是
SELECT E.ENAME FROM EMP E WHERE E.JOB || \’\’ = \’CLERK\’;

首佳管理软件资讯博客分享

2007年04月5日

如何进行 SQL Server 性能优化?

类归于: 其它软件技术分享 — 标签:, — 汽修汽配管理软件 @ 2:05 上午

应当如何进行 SQL Server 性能优化?

为了有效地优化 Microsoft SQL Server 的性能,应当在各种可能情况中识别能够最大地提高性能的方面,然后重点分析这些方面。否则,可能会在不能提高性能的问题上花费相当长的时间和气力。

经验显示,SQL Server 性能的最大改进得益于逻辑的数据库设计、索引设计和查询设计方面。反过来说,最大的性能问题常常是由其中这些相同方面中的不足引起的。如果性能是所关心的 问题,那么应当先在这些方面集中精力,因为用相对少的时间投资,常常可以获得非常大的性能改进。

尽管其它的系统级性能问题,如内存、缓冲区高速缓存、硬件等等也是等待研究的问题,但经验显示,从这些方面得到的性能改进通常是渐进的。SQL Server 主要以自动方式管理可用的硬件资源,这样可以减少系统级手动调整的需要(因此,这也就是效益)。

相关的 Knowledge Base 文章
有关此主题和其它相关问题的详细信息,请查看 Microsoft Knowledge Base。其中有几千篇文章,回答了有关使用 Microsoft 产品的常见问题。请参见以下 Knowledge Base 文章:

Q110352: Optimizing Microsoft SQL Server Performance
建议 SQL Server 使用何种内存分配?
Microsoft SQL Server 允许使用多至 2048 MB 的虚拟内存。Windows NT 为每 32 位 Windows 应用程序提供 4GB 虚拟地址空间,其中较低的 2 GB 是每个进程私有的并供应用程序使用。而较高的 2 GB 保留给系统使用。

4 GB 地址空间由 Windows NT 虚拟管理器 (VMM) 映射到可用物理内存。可用物理内存最多可达 4 GB,这取决于硬件平台的支持。

32 位 Windows 应用程序,如 SQL Server 只能感知虚拟或逻辑地址,而不是物理地址。应用程序在指定时间可以使用多少内存(工作集)由可用物理内存和 VMM 决定。应用程序不能直接控制内存驻留。

虚拟地址系统,如 Windows NT,允许虚拟内存的过量委托,这样虚拟内存和物理内存的比率就超过 1:1。结果,较大的程序就可以运行在多种物理内存配置的机器上。但是,在多数情况下,如果使用比所有进程的平均工作集的组合多很多的虚拟内存,则会导致 很差的性能。

相关的 Knowledge Base 文章
有关此主题和其它相关问题的详细信息,请查看 Microsoft Knowledge Base。其中有几千篇文章,回答了有关使用 Microsoft 产品的常见问题。请参见以下 Knowledge Base 文章:

Q110983: Recommended SQL Server for NT Memory Configurations

如何解决SQL Server 7.0 或更高版本上查询低性能的问题?

类归于: 其它软件技术分享 — 标签:, — 汽修汽配管理软件 @ 2:05 上午

这篇文章中的信息适用于:
Microsoft SQL Server 7.0
Microsoft SQL Server 2000(所有版本)

本文的发布号曾为 CHS243589
概要
本文介绍应用程序在使用 Microsoft SQL Server 时可能遇到的一种特定类型的性能问题: 特定查询或查询组的低性能问题。 如果您正在解决性能问题,但没有将问题分离为执行比预期性能低的某个特定查询或某一小组查询,请参见 Microsoft Knowledge Base 中的下列文章:

224587 INF: 解决 SQL Server 中的应用程序性能问题

本文的其它内容假设您已经使用上述文章缩小了问题的范围,并且获取了 SQL Server“事件探查器”跟踪中的特定事件和文本所详细描述的数据列。
更多信息
调整数据库查询需要多方面的工作。 下面章节讨论研究查询性能时通常需要检查的项。

确认存在适当的索引

当您遇到查询执行时间过长时,一个最简单的检查方法是进行索引分析。 如果您正研究一个单独查询,则可以使用“查询分析器”中的执行索引分析选项,如果具有大工作负荷的“事件探查器”跟踪,则可以使用“索引优化向导”。 这两种方法均使用 SQL Server 查询优化器来确定对特定查询有帮助的索引。 这是确定数据库中是否存在适当索引的很有效的方法。

有关如何使用“索引优化向导”的详细信息,请参见 SQL Server 7.0 Books Online 中的“索引优化向导”主题。

如果您从以前版本的 SQL Server 升级应用程序,可能会发现由于优化器和存储引擎的变化,在 SQL Server 7.0 中使用不同的索引会更有效。 “索引优化向导”可以帮助您确定索引策略的变化是否能提高性能。
删除查询语句中所有的查询、表和联接提示

提示将替代查询优化,并能阻止查询优化器选择最快的执行计划。 由于查询优化器的变化,能在以前版本的 SQL Server 中提高性能的提示可能对 SQL Server 7.0 的性能无影响,或者事实上起到破坏作用。 而且,联接提示可能由于下列情况导致性能降低:
联接提示阻止特殊查询进行参数自动化及随后的查询计划缓冲。
当您使用联接提示时,即使这些联接不明确使用某个提示,它暗示您想要强制查询中所有表的联接次序。
如果您分析的查询包含任何提示,将其删除并重新估计性能。
检查执行计划

在确认存在适当的索引并且没有提示限制优化器产生一个有效的计划后,则可以检查查询执行计划了。 可以有多种方式查看查询的执行计划:
SQL Server 事件探查器
如果您在 SQL Server“事件探查器”中捕获了 MISC:Execution Plan 事件,则对于特定的系统进程 ID (SPID),此事件将在查询的 StmtCompleted 事件之前发生。
查询分析器: 图形显示计划
在查询窗口中选择查询后,单击查询菜单并单击显示估计执行计划。

备注:如果存储过程或批处理创建并引用了临时表,则在显示执行计划之前,需要使用 SET STATISTICS PROFILE ON 语句或显式创建临时表。
SHOWPLAN_ALL and SHOWPLAN_TEXT 要得到估计的执行计划的文本版本,可以使用 SET SHOWPLAN_ALL 及 SET SHOWPLAN_TEXT 选项。 有关详细信息,请参见 SQL Server 7.0 Books Online 中的 SET SHOWPLAN_ALL (T-SQL) 和 SET SHOWPLAN_TEXT (T-SQL) 主题。

备注:如果存储过程或批处理创建并引用了临时表,则在显示执行计划之前,需要使用 SET STATISTICS PROFILE ON 或显式创建临时表。
STATISTICS PROFILE
当 以图形方式或 SHOWPLAN 显式估计的执行计划时,并没有真正执行查询。 因此,如果您在批处理或存储过程内创建临时表,由于临时表不存在,将不能显示估计的执行计划。 STATISTICS PROFILE 首先执行查询,然后显示真正的执行计划。 有关详细信息,请参见 SQL Server 7.0 Books Online 中的 SET STATISTICS PROFILE (T-SQL) 主题。 当在“查询分析器”上运行时,这将在结果窗格的执行计划选项卡上以图形格式显示。
检查显示计划输出

在显示计划输出中,有对于某个特定查询 SQL Server 所使用的执行计划的详细信息。 有关产生的信息和事件的详细信息,请参见 SQL Server 7.0 Books Online 中的 Optimizing Database Performance 一章。 下面是有关执行计划的基本方面,可用于确定是否使用了最好的查询计划:
使用适当的索引
显示计划输出将显示查询中的每个表以及用于从 查询中获取数据的访问路径。 对于图形显示计划,将鼠标指针放置于表上,查看每个表中包含的详细信息。 如果使用了某个索引,则将看到 Index Seek,否则,将看到关于堆集的 Table Scan 以及关于具有群集索引表的 Clustered Index Scan。 注意:“Clustered Index Scan”表明正通过群集索引扫描表,而不是群集索引直接用于访问单独行。

如果您确定存在有用的索引,而查询没有使用该索引,则可以通过索引提示强行使用该索引。 有关索引提示的详细信息,请参见 SQL Server 7.0 Books Online 中的 FROM (T-SQL) 主题。
适当的联接次序
显 示计划输出指明查询中的表以何种次序联接的。 对于嵌套循环联接,列出的上部表为外部表,应为两个表中的较小者。 对于哈希联接,上部表成为生成输入,应为两表中的较小者。 然而,如果查询处理器发现查询优化器作出错误判断,它在运行时间内将把生成输入和探测输入倒置,因而上面的次序并非很重要。 您可以通过检查显示计划输出中的 Row Count 估算数来确定哪个表返回的行较少。

如果您确定通过另一种联接次序可以改善查询,则可以用联接提示强制进行连接次序。 有关联接提示的详细信息,请参见 SQL Server 7.0 Books Online 中的 FROM (T-SQL) 主题。

备注: 在大的查询中使用联接提示也隐含地强制查询中的其他表进行联接的次序,就象设置了 FORCEPLAN 一样。
适当的联接类型
SQL Server 使用嵌套循环、哈希联接和合并联接。 如果某个低性能查询正使用某一联接技术,而非另一种联接技术,则可以尝试强制使用不同的联接类型。 例如,如果某查询正使用哈希连接,可以通过 LOOP 联接提示强制执行嵌套循环联接。 有关联接提示的详细信息,请参见 SQL Server 7.0 Books Online 中的 FROM (T-SQL) 主题。

备注: 在大的查询中使用联接提示也暗中规定了查询中的其它表的联接类型,就象设置了 FORCEPLAN 一样。
并行执行
如 果您正使用多处理器计算机,则也可以检查其是否使用了并行计划。 如果使用了并行技术,则将看到一个 PARALLELISM (Gather Streams) 事件。 如果某个使用并行计划的特定查询的性能很低,则可以使用 OPTION (MAXDOP 1) 提示强制非并行计划。 有关详细信息,请参见 SQL Server 7.0 Books Online 中的 SELECT (T-SQL) 主题。
注意: 由于查询优化器通常为查询选择最佳的执行计划,建议只有有经验的数据库管理员才使用联接提示、查询提示及表提示作为最后的解决措施。

SQL性能优化:提高SQL性能的措施!

类归于: 其它软件技术分享 — 标签:, , — 汽修汽配管理软件 @ 2:04 上午

转摘自:http://www.meiwa.cc/essential/detail.aspx?id=264&f=a&userName=

一、问题的提出
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣, 但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是 SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写 出高质量的SQL语句,提高系统的可用性。

在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代 码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删 除索引,这有助于写出高性能的SQL语句。

二、SQL语句编写注意问题
下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。

1. IS NULL 与 IS NOT NULL
不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。

任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。

2. 联接列

对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个 职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。

下面是一个采用联接查询的SQL语句,

select * from employss
where
first_name||\’\'||last_name =\’Beill Cliton\’

上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。

当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。

Select * from employee
where
first_name =\’Beill\’ and last_name =\’Cliton\’

遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着Bill Cliton这个员工的姓名,对于这种情况我们又如何避免全程遍历,使用索引呢?可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需 要注意,这个函数是不能作用在索引列上。下面是SQL查询脚本:

select * from employee
where
first_name = SUBSTR(\’&&name\’,1,INSTR(\’&&name\’,\’ \’)-1)
and
last_name = SUBSTR(\’&&name\’,INSTR(\’&&name’,\’ \’)+1)

3. 带通配符(%)的like语句

同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句:

select * from employee where last_name like \’%cliton%\’

这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有 底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用:

select * from employee where last_name like \’c%\’

4. Order by语句

ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。

仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。

5. NOT

我们在查询时经常在where子句使用一些逻辑表达式,如大于、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。下面是一个NOT子句的例子:

… where not (status =\’VALID\’)

如果要使用NOT,则应在取反的短语前面加上括号,并在短语前面加上NOT运算符。NOT运算符包含在另外一个逻辑运算符中,这就是不等于(<>)运算符。换句话说,即使不在查询where子句中显式地加入NOT词,NOT仍在运算符中,见下例:

… where status <>\’INVALID\’

再看下面这个例子:

select * from employee where salary<>3000;

对这个查询,可以改写为不使用NOT:

select * from employee where salary<3000 or salary>3000;

虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。

6. IN和EXISTS

有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。

第一种格式是使用IN操作符:

… where column in(select * from … where …);

第二种格式是使用EXIST操作符:

… where exists (select \’X\’ from …where …);

我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。

第二种格式中,子查询以‘select \’X\’开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定 在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。

通过使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查 询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以 后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。

Update You Set You.Sadness=Me.Happiness From You,Me

SQL语句执行速度与CPU个数和内存大小有多大关系?

类归于: 其它软件技术分享 — 标签:, — 汽修汽配管理软件 @ 2:04 上午

今天在一Mainframe机上进行了一个测试
增加CPU个数和增大内存大小
发现有些select语句执行速度可以大大地加快
而有些selct语句执行速度可以说根本未变
(可能还会慢上个几秒)

有些select语句只会用一颗CPU(该颗CPU使用率在100%),
其它的空闲着
有些select语句会用所有的CPU,但使用率可能在25%
这是为什么呢?

测试环境如下:
分别用4,8,12,16颗英特尔PIII至强900MHz/2MB CPU
内存大小分别是:4GB和8GB
OS:Win2000 Data Center
RDBMS: MS SQL Server 2000
当您怀疑计算机硬件是影响SQL Server运行性能的主要原因时,可以通过SQL Server Performance Monitor监视相应硬件的负载,以证实您的猜测并找出系统瓶颈。下文将介绍一些常用的分析对象及其参数。

Memory: Page Faults / sec

  如果该值偶尔走高,表明当时有线程竞争内存。如果持续很高,则内存可能是瓶颈。

Process: Working Set

  SQL Server的该参数应该非常接近分配给SQL Server的内存值。在SQL Server设定中,如果将”set working set size”置为0, 则Windows NT会决定SQL Server的工作集的大小。如果将”set working set size”置为1,则强制工作集大小为SQLServer的分配内存大小。一般情况下,最好不要改变”set working set size”的缺省值。

Process:%Processor Time

  如果该参数值持续超过95%,表明瓶颈是CPU。可以考虑增加一个处理器或换一个更快的处理器。

Processor:%Privileged Time

  如果该参数值和”Physical Disk”参数值一直很高,表明I/O有问题。可考虑更换更快的硬盘系统。另外设置Tempdb in RAM,减低”max async IO”,”max lazy writer IO”等措施都会降低该值。

Processor:%User Time

表示耗费CPU的数据库操作,如排序,执行aggregate functions等。如果该值很高,可考虑增加索引,尽量使用简单的表联接,水平分割大表格等方法来降低该值。

Physical Disk:Avg.Disk Queue Length

  该值应不超过磁盘数的1.5~2倍。要提高性能,可增加磁盘。
注意:一个Raid Disk实际有多个磁盘。

SQLServer:Cache Hit Ratio

该值越高越好。如果持续低于80%,应考虑增加内存。 注意该参数值是从SQL Server启动后,就一直累加记数,所以运行经过一段时间后,该值将不能反映系统当前值

从而大家可以体会到索引的重要性.

2007年03月10日

首佳企业管理软件数据库不能启动的问题(Sybase Anywhere数据库不能启动)

类归于: 软件技术和维护 — 标签:, , — 汽修汽配管理软件 @ 12:00 上午

本文讲述问题针对普通的Sybase Anywhere数据库版本。

在运行“数据库启动程序”时,或者运行“dbsrv8.exe”时,提示“Unable to initialize requested commnuication links”或“tcpip communication link not started”。意思是“不能初始化请求通信连接”和”TCPIP通信连接不能启动”

通常情况可能Sybase Anywhere数据库驱动程序文件可能有损坏。这种情况重新安装软件即可解决问题。

Sybase Anywhere数据库以网络服务方式启动时,需要TCP/IP协议的支持。启动时默认占用2638的端口,如果防火墙禁用2638端口,将不能启动数据库的网络服务。解决办法最好是在防火墙端口设置中启用2638 这个端口,或者指定其它端口启动数据库服务。

来自:首佳管理软件资讯博客

2007年03月9日

MS SQL的ISQL命令详解

类归于: 其它软件技术分享 — 标签:, , , — 汽修汽配管理软件 @ 8:04 下午

今天转换一个数据库,刚好要用到ISQL来装载几个触发器和存储过程的SQL文件,顺便写下这些文字以分享。

MS SQL有简单方便又高效的管理界面,还用ISQL干什么?什么是ISQL工具?ISQL是用于交互式执行Transact-SQL语句和脚本的数据库工具,ISQL同微软的OSQL是差不多的工具。比如做一些高级的配置,还比如在客户端或远程执行数据库操作等工作时,ISQL是很方便的。比如入侵一台有SQL服务的主机,入侵SQL Server后都能干什么?最好的工具的就是ISQL了。

不光是微软的SQL支持ISQL,还有Sybase的Enterprise版本的数据库也支持,Sybase的Unix版本,ISQL等工具更是有用武之地了。ISQL依赖DB-Library API的应用程序不支持 SQL Server 2000 版的某些功能。例如,isql无法访问用ntext数据类型定义的列,并截断任何超过255字节的char、varchar、nchar 或 nvarchar 列。它也无法检索XML 文档形式的结果。除了isql中的这些限制外,osql和isql 支持相同的功能。

isql命令的参数详解:
isql [-U login id] [-P password] [-S server]
isql [-?] | [-L] | [
{ {-U login_id [-P password]} | -E }
[-S server] [-H hostname] [-d use database name]
[-l time_out] [-t time_out] [-h headers]
[-s col_separator] [-w column_width] [-a packet_size]
[-e] [-x max_text_size] [-c cmd_end] [-q "query"] [-Q "query"]
[-n] [-m error_level] [-r {0 | 1}]
[-i input file] [-o output file] [-p] [-b] [-O] ]

所有参数要区分大小写,在使用尤其要注意。
-?显示 isql 开关的语法摘要。
-L列出在本地配置的服务器和在网络上广播的服务器的名称。
-U login_id用户登录 ID。登录 ID 区分大小写。
-P password 是用户指定的密码。如果未使用-P 选项,isql 将提示输入密码。如果在命令提示的末尾使用 -P 选项而不带密码,isql 使用默认密码NULL)。密码区分大小写。
-S server_name 指定要连接到的 SQL Server 默认实例。如果未指定服务器,isql 将连接 到本地计算机上的 SQL Server 默认实例。如果要在网络上从远程计算机执行 isql,则需要此选项。
-H hostname 是使用的客户端的主机名称。工作站名称存储在 sysprocesses.hostname 中并由 sp_who 显示。如果未指定,则采用当前计算机名称。用这个可以欺骗SQL Server中进程信息中显示的主机名。
-d use database name,用于指定使用数据库名。
-i input file,用于指定装载的SQL语句文件。当你不想输入太多SQL语句时,你可以写好在一个文件,用这个参数,作为批处理来执行。

以上这些基本上足够用了,下面以服务器ABC为例,用户名sa,密码为了空,用ISQL登录数据库DB:
ISQL -U sa -P -S ABC -d DB
连接成功的话,在“1>”后面输入SQL语句,回车,第二行输入go回车,就执行了上一句SQL语句。
SQL语句可以分多行输入,直到你执行“go”提交后才执行SQL语句。
quit可以退出当前交互式命行模式。

来自:管理软件资讯博客

2007年01月27日

分享软件技术:增加PB开发技术专栏

类归于: 其它软件技术分享 — 标签:, , , — 汽修汽配管理软件 @ 8:02 下午

为了分享更多的软件技术,首佳管理软件资讯博客增加PB开发技术专栏,分享有关PB软件开发过程中遇到的一些疑难杂症、PB开发经验等内容。当然如果有需要,也可以分享一些简单的问题。

什么PB?PB是PowerBuilder的简称,是由Sybase公司研发的基于数据库应用的可视化软件开发工具,常用用于开发与数据库相关的应用程序是业界领先的快速应用开发 (RAD) 工具,通过将设计、建模、开发和管理紧密集成到一起,提高了开发人员的生产力。

Sybase公司简介:

中文名:赛贝斯,成立于 1984 年,总部设在美国加州的 Sybase 公司是全球最大的专注于信息管理和信息移动技术的企业级软件公司,其业界领先的技术及解决方案将数据从数据中心传递到任何所需的地方。作为全球最大的独立 软件厂商之一,Sybase 不仅拥有业界最完整的企业数据管理系统、领先的企业门户产品以及移动与无线解决方案,还致力于整合各种应用平台、数据库和应用软件,协助客户和合作伙伴成 就企业信息无限化。

Sybase 拥有分布在全球 60 个国家的 4000 多名员工,为实现其”每时每刻满足用户需求”的承诺奠定了坚实的基础。经过二十多年的奋斗与开拓,Sybase 公司取得了令人瞩目的成绩。Sybase 占据着移动数据库、移动中间件及企业级移动设备管理软件领域第一的市场份额;并拥有世界最大的数据仓库,业界领先的信息建模解决方案以及 Linux 平台上性能优异的数据库。Sybase 共拥有四万多家企业级客户,主要集中在金融服务业、电信业、医疗保健业、政府部门、媒体服务业和零售业,其中《财富》杂志排名前 1000 家企业中 900 家和排名前 100 家企业中的 95 家均为 Sybase 的客户。此外,全球 125 家主要电讯公司、75个重要的股票交易所、华尔街 56% 的金融机构都是 Sybase 的客户。同时,Sybase 广结天下盟友,与业界领先的应用、设备及服务供应商一起为客户提供全方位的解决方案,拥有包括 EDS、HP、Intel、Microsoft、SAP 和 Sun Microsystems 在内的一万多家合作伙伴,并与 Nokia、Toshiba 等 OEM 伙伴及增值服务商保持着良好的关系。公司还拥有超过十万人的开发者团体。2004 年公司全年总收入达 7.885 亿美金。

Sybase 公司于 1991 年 12 月进入中国大陆,经过一段时间的本地技术人才积蓄与市场开拓后,在 1993 年投资 230 万美元正式建立 Sybase 在中国的公司,注册名称为赛贝斯软件(中国)有限公司。经过十几年的发展,Sybase 公司赢得了大量的市场,拥有遍及金融、电信、政府、制造、零售、交易、教育、铁路、电力、水利、环保、军事、外贸等行业超过 1000 家的用户。拥有雄厚技术实力与产品魅力、一贯坚持”走有特色的中国之路”的 Sybase 中国公司衷心地愿为广大国内用户开启未来的成功之门。Sybase 公司拥有经验丰富的技术专家和工程人员,为用户提供一流的技术支持与服务,包括系统选型、方案论证、业务分析、系统设计和应用开发等,从而多角度全方位地 满足不同用户、不同应用系统的不同需求。Sybase公司在中国有员工 350 多人,其中技术人员数量占到公司总人数的 85%。Sybase 中国公司除北京总部外,在上海、成都、广州等地设立了办事处,并在北京、上海、西安设立了研发中心,与合作伙伴一道为客户就近提供服务与支持。为全力提升 既定市场的领导地位,Sybase 于 2002、2003 年相继在北京、上海成立”解决方案中心”,加强与客户、合作伙伴的协作关系并提供最完善的技术顾问。

自 90 年代初起,Sybase 已占稳中国市场,随着中国加入世贸及北京成功申办 2008 年奥运,亚太趋势必享有策略性的优势。CCID 报告指出,Sybase 在中国电信业已取得 45% 的市场占有率,并以 36.2% 的份额占据中国铁路数据库市场绝对的领导地位。Sybase 公司凭借优异的服务质量,连续三年荣获 CCID 颁发”最佳用户服务满意度奖”;更荣膺 2002 年中国数据库软件市场年度成功企业殊荣。IDC 调查报告显示,Sybase 公司在中国软件市场的占有率名列第四,目前已占据着国内软件市场的主导地位。

Sybase官方网站:http://www.sybase.com
Sybase中国:http://www.sybase.com.cn

2006年12月26日

为何客户端的管理软件无法访问服务器

类归于: 软件技术和维护 — 标签:, , , , , — 汽修汽配管理软件 @ 7:02 下午

类似问题:首佳汽修汽配管理软件客户端运行不了、C/S结构的应用软件客户端无法打开、客户机无法访问数据库服务器、客户机无法打软件等。

客户反映,在主机上已经启动了数据库服务,也可以打开软件,为什么客户机就打不开?

首先,应该先检查网络是否正常?包括检查网线接头连接是否正常,路由器是否正常工作;在客户机上运行”cmd”(注:XP、2000以上的操作系统,WIN98系统运行command.exe),然后在DOS提示符下输入ping 主机IP,看看返回的值是否正常,如果返回 time out表示超时,或网络不通、或主机防火墙屏蔽了PING命令。

其次,检查客户机和服务器的数据源设置。首佳汽修汽配管理软件系列产品的设置方法请参考网站http://www.whsjsoft.com/中服务支持的有关介绍。如果主机的数据库启动参数是以单机形式启动的话,是不可以让其它客户机访问的。

然后,检查数据库服务器的设置是否正常,包括数据源设置、操作系统本身的配置。操作系统方面,主要要检查防火墙设置。开启了防火墙的操作系统,默认情况下不允许任何程序的网络服务活动;一般在首次运行数据库服务相关程序时,都会提示该程序正要访问网络,是否允许通过?你点总是允许就行了。如果点了禁止通过,那么客户机肯定是不可以访问服务器的数据库的,就需要再设置防火墙了。因为数据库服务的广播被禁止了,客户机就搜索不到。

如何设置防火墙允许某个程序访问网络?
下面以XP自带的防火墙为例:
1、在桌面上点右键网上邻居,属性,出来的网络连接,再双击本地连接。
2、本地连接状态,点属性。
3、本地连接属性,点高级,看到的WINDOWS防火墙,点设置。
4、WINDOWS防火墙,默认是启用状态的。再点例外,如下图所示:


我机子安装次数多了,所以显示多个Adaptive Sever Anywhere Database Engine,一般情况只有一个,你打上勾就表示允许访问网络。注:Adaptive Sever Anywhere Database Engine是Sybase Anywhere数据库的引擎程序。其它数据库同样也有引擎。如果有“首佳企业管理软件”在列表内也打上勾。没打勾的表示禁止访问网络。
5、选中Adaptive Sever Anywhere Database Engine,点编辑可进行高级设置,编辑程序中点更改范围,如果只是在局域网内使用,选仅我的网络就行了,默认是都可以访问(包括外网,比较危险。)。你也可以设置只哪些IP的可以访问,选自定义列表就行了,输入IP地址列表。 

来源:首佳科技

2006年12月19日

Adaptive Server Anywhere 9.0之ODBC配置对话框详解

类归于: 其它软件技术分享 — 标签:, , , — 汽修汽配管理软件 @ 6:05 上午

1、[ODBC 配置] 对话框:[ODBC] 选项卡

只有当您创建或修改 ODBC 数据源时才会显示此选项卡。

[ODBC 配置] 对话框的 [ODBC] 选项卡具有以下组件:

数据源名    

键入一个名称来标识此 ODBC 数据源。对于该数据源,您可以使用任何描述性名称(允许使用空格),但是建议您将该名称设置得简短些,因为您需要在连接字符串中输入它。

说明    

您可以提供数据源的说明。此说明可以帮助您或您的最终用户在可用数据源列表中确定此数据源。这是一个可选字段。

隔离级别    

键入一个数字值指定此数据源的初始隔离级别:

  • 0     这也称为读取未提交的隔离级别。这是缺省隔离级别。它提供最大并发级别,但可以在结果集中看到脏读行、非可重复读取行和幻像行。
  • 1     这也称为读取已提交的级别。它提供的并发级别低于级别 0,但消除了级别 0 时结果集中存在的一些不一致。可能出现非可重复读取行和幻像行,但禁止脏读行。
  • 2     这也称为可重复读取级别。可能出现幻像行。禁止脏读行和非可重复读取行。
  • 3     这也称为可序列化级别。这提供最低的并发级别,是最严格的隔离级别。禁止脏读行、非可重复读取行和幻像行。

Microsoft 应用程序(SQLStatistics 中的关键字)    

如 果希望 SQLStatistics 函数返回外键,则选择此选项。ODBC 说明指出 SQLStatistics 不应当返回主键和外键;但是,某些 Microsoft 应用程序(例如 Visual Basic 和 Access)假定主键和外键是由 SQLStatistics 返回的。

Delphi 应用程序    

如果您使用 Borland Delphi 应用程序开发工具创建产生数据源的应用程序,则选择此选项。

如果选中该选项,则向每一行都指派一个书签值,而不是另外指派两个(一个用于向前读取,另一个用于向后读取)。

Delphi 不能处理一行的多个书签值。如果清除该选项,则可滚动游标的性能可能会受到影响,因为总是必须从游标的开始位置滚动到请求的行才能获得正确的书签值。

不显示读取警告    

如果不想显示读取过程中从数据库服务器返回的警告消息,则选择此选项。

在进行读取时,数据库服务器 8.0 版或更高版本与其先前版本相比,会返回范围更广的警告消息。对于用该软件较早版本部署的应用程序,您可以选择此选项以确保正确处理读取警告。

防止 [驱动程序不支持] 错误    

Adaptive Server Anywhere ODBC 驱动程序返回 Driver not capable(驱动程序不支持)错误,因为它不支持限定符。某些 ODBC 应用程序不能正确处理该错误。选择此选项防止返回此错误代码,从而使这些应用程序能够正常工作。

延迟自动提交直到语句关闭    

选择此选项延迟提交操作直到语句关闭。

描述游标行为    

选择您希望在执行一个过程时游标被重新描述的频率。缺省设置为 [根据需要]。

  • 从不     如果您知道游标不需要进行重新描述,则选择此选项。重新描述游标代价较高并且会降低性能。
  • 根据需要     选中此选项,ODBC 驱动程序将决定是否必须重新描述游标。过程中的 RESULT 子句可避免 ODBC 应用程序在游标打开后重新描述结果集。这是缺省设置。
  • 始终     在每次打开游标时都重新描述它。如果您使用 Transact-SQL 过程或返回多结果集的过程,那么每次打开游标时都必须重新描述。

转换器     转换器在 ANSI 和 OEM 代码页之间转换字符。大多数数据库不需要转换器,因为 ODBC 驱动程序管理器自动执行客户端的字符集和数据库的字符集之间的转换。如果您的数据库使用 ANSI 代码页(缺省设置),则不要选择转换器。

如果需要转换器,则单击 [选择],然后从已安装的转换器列表中选择转换器。

  • 选择转换器     单击 [选择转换器] 从已安装的转换器列表中选择 ODBC 转换器。

测试连接     测试提供的信息能否产生正确的连接。为了使测试有效,必须在 [登录] 选项卡上指定用户 ID 和口令。

 

2、[ODBC 配置] 对话框:[登录] 选项卡

[ODBC 配置] 对话框的 [登录] 选项卡具有以下组件:

使用集成登录    

选择此选项使用集成登录连接。

如果选择了此选项,则无需指定用户 ID 和口令,而是向 Adaptive Server Anywhere 集成登录机制提供您的操作系统的用户 ID 和口令。

若要使用集成登录,用户必须已被授予集成登录权限,并且您连接到的数据库也必须设置成接受集成登录。只有具有 DBA 访问权限的用户可以管理集成登录权限。

提供用户 ID 和口令     如果您想为连接指定用户 ID 和口令,则选择此选项。

  • 用户 ID     键入用于连接的用户 ID。所提供的用户 ID 必须具有连接数据库的权限。
  • 口令     键入连接的口令。口令必须是提供的用户 ID 的正确口令。

    口令中使用的扩展字符区分大小写,而与数据库的区分大小写设置无关。

    • 加密口令     如果希望口令以加密形式存储在配置文件中,则选择此选项。

      此选项仅在创建 ODBC 数据源时出现。使用 dbmlsync 实用程序访问此对话框时不出现此选项。

建议不要在数据源中包含口令,因为这会带来很大的安全风险。

数据源名     此选项仅在使用 dbmlsync 实用程序打开此对话框时出现。选中该选项,以选择用于连接到数据库的数据源(存储的连接参数集)。该字段等效于 DSN 连接参数,它引用注册表中的数据源。单击 [浏览] 可查看数据源列表。

数据源文件     此选项仅在使用 dbmlsync 实用程序打开此对话框时出现。选中该选项以选择用于连接的数据源文件。可以通过单击 [浏览] 搜索该文件。ODBC 数据源文件通常用于 UNIX 系统。可以单击 [浏览] 查找 ODBC 数据源。

3、[ODBC 配置] 对话框:[数据库] 选项卡


[ODBC 配置] 对话框的 [数据库] 选项卡具有以下组件:

服务器名    

键入 Adaptive Server Anywhere 个人服务器或网络服务器的名称。例如,asademo。如果希望连接到网络服务器上,则需要提供服务器名称。

如果希望连接到缺省的本地个人服务器上,或者希望从本地计算机的数据库文件启动数据库服务器,则不要输入服务器名。如果没有缺省的个人服务器,并且没有输入服务器名称,则连接失败。

启动行    

启动行是在您的计算机上启动个人数据库服务器或网络服务器的命令。只有当要连接到当前未运行的本地数据库服务器,或者希望设置您自己的启动参数时,才输入启动行。输入时,必须输入服务器的完整路径,例如,要启动个人数据库服务器,请输入 c:\\Program Files\\Sybase\\SQL Anywhere 9\\win32\\dbeng9.exe

还可在 [启动行] 字段中包括选项。当希望进行以下操作时使用启动行和选项:

  • 利用任何高级服务器功能。
  • 控制协议选项。
  • 提供诊断或疑难解答消息。
  • 设置权限。
  • 设置数据库参数(包括加密)。

数据库名    

运行在服务器上的每个数据库都由数据库名称标识。键入您要连接到的数据库的名称。

数据库文件    

如果要连接的数据库当前没有在服务器上运行,请指定数据库文件。建议键入数据库文件的完整路径和名称,例如,C:\\sample.db。否则,文件的路径是相对于服务器的工作目录。只有启动尚未运行的数据库时才需要使用此选项。单击 [浏览] 从文件目录中选择数据库文件。

加密密钥    

如果数据库文件是加密的,则每次数据库服务器启动数据库时,都必须向数据库服务器提供密钥。

自动启动数据库    

选中该选项可在连接到 [数据库文件] 字段中指定的数据库之前启动它。

如果希望确保仅连接到正在运行的数据库上,则应清除 [自动启动数据库] 选项。

最后一个连接断开后停止数据库     选中该选项可在最后一个用户断开连接之后自动关闭数据库。

4、[ODBC 配置] 对话框:[网络] 选项卡


[ODBC 配置] 对话框的 [网络] 选项卡具有以下组件:

TCP/IP     如果要对网络包使用 ECC_TLS(以前是 Certicom)或 RSA_TLS 高度加密,则必须选择 TCP/IP 协议才能访问网络数据库服务器。在相邻的字段中,您可以输入用于建立从客户端应用程序到数据库的连接并调整该连接的通信参数。

例如,要在端口 4436 上为数据库服务器查找计算机 server1,您可以输入 HOST=server1;PORT=4436

如果您不确定要使用哪个协议,请与您的网络管理员联系。

SPX     您可以选择 SPX 协议以连接到 Novell NetWare 网络上的数据库。NetWare 也支持 TCP/IP 协议。在相邻的字段中,您可以键入用于建立从客户端应用程序到数据库的连接并调整该连接的通信参数。

例如,对于 SPX 连接,您可以输入通信参数 HOST=0:0:0:0:0:1/4:236:121:215;PORT=2369

如果您不确定要使用哪个协议,请与您的网络管理员联系。

命名管道     [命名管道] 协议用于同一台计算机上的客户/服务器通讯。如果想在已认可的安全环境下运行,可以使用命名管道协议。它只在 Windows NT 上提供。

如果您不确定要使用哪个协议,请与您的网络管理员联系。

共享内存     共享内存协议用于在同一台计算机的同一个操作系统下运行的客户端和服务器之间的通信。

如果您不确定要使用哪个协议,请与您的网络管理员联系。

活动超时    

活动包是通过客户/服务器发送的,用于确认连接是否完整。如果客户机运行在活动超时期且没有探测到活动包,通讯将被切断。此参数只适用于网络服务器以及 TCP/IP 或 IPX 通信协议。

缺省活动超时是 120 秒。

空闲超时    

设置在连接终止之前客户端的空闲时间量。如果客户机运行在空闲超时期且没有提交请求,连接将被切断。

缺省的客户端空闲时间为 240 分钟。

缓冲区大小    

设置通信包的最大字节大小。您应当将缓冲区大小设置得比网络所允许的值小一些,这是由于网络软件在通过网络发送信息之前,可能会向每个缓冲区添加信息。

缺省缓冲区大小为 1460 字节。

压缩网络包     选择此选项打开连接压缩。使用压缩连接在某些情况下可明显提高 Adaptive Server Anywhere 的性能。

选择对网络包进行加密的方法    

允许数据包加密从客户机通过网络发送。

需要有可单独授权的选件

传输层安全性要求获取可单独授权的 SQL Anywhere Studio 安全性选件,并且受出口法规约束。

  •      不加密通过客户端传输的通信包。这是缺省设置。
  • 简单     用简单加密方法加密从客户端传输的通信包。所有平台及以前版本的 Adaptive Server Anywhere 都支持简单加密。简单加密没有 ECC_TLS 或 RSA_TLS 加密安全性强。
  • ECC_TLS     选择此选项启用 ECC_TLS(以前为 Certicom)加密。当网络数据包在客户端和服务器之间进行传输时,使用 ECC_TLS 加密可保护它们的保密性和完整性。只有在 TCP/IP 协议上才可使用此类加密。

    在相邻字段中必须提供受信任证书值。您还可以单击 [编辑] 来提供此值。

  • RSA_TLS     选择此选项启用 RSA_TLS 加密。当网络数据包在客户端和服务器之间进行传输时,使用 RSA_TLS 加密可保护它们的保密性和完整性。只有在 TCP/IP 协议上才可使用此类加密。

    在相邻字段中必须提供受信任证书值。您还可以单击 [编辑] 来提供此值。

  • RSA_TLS_FIPS     选择此 选项启用 RSA_TLS_FIPS 加密。选中此选项时,数据库服务器接受使用 FIPS 认可的 RSA 加密技术加密的通信数据包。RSA_TLS_FIPS 使用与 RSA_TLS 不同的认可库,但与使用 Adaptive Server Anywhere 9.0.2 或更高版本指定 RSA_TLS 的客户端兼容。要使用该加密类型,客户端和服务器必须都运行于支持 32 位的 Windows 操作系统,该连接必须通过 TCP/IP 端口。

    在相邻字段中必须提供受信任证书值。您还可以单击 [编辑] 来提供此值。

    • 编辑     单击 [编辑] 在[Certicom 加密选项] 对话框为受信任证书、证书公司、证书单元和证书名提供加密值。

5、[ODBC 配置] 对话框:[高级] 选项卡


[ODBC 配置] 对话框的 [高级] 选项卡具有以下组件:

连接名    

键入一个名称来标识连接。此字段为可选。

字符集     键入字符集名称。缺省情况下使用客户端的 ANSI 字符集,例如英文系统使用 cp1252。您还可以提供 OEM 字符集代替 ANSI 字符集。

允许多重记录读取    

选择此选项一次检索多个记录而不是分别检索记录,这样可以提高性能。

显示日志文件中的调试信息     选择此选项在日志文件中记录有关通信链接的诊断信息。

  • 日志文件     键入要在其中保存调试信息的日志文件的名称。

其它连接参数     在此字段中的以分号分隔的列表中键入任何其它连接参数。例如,

DEBUG=YES;LOG=connection.log

在该字段中设置的参数优先于在该对话框的其余部分中设置的参数。例如,如果在 [标识] 选项卡中输入用户 ID DBA,而在该字段中设置连接参数”uid=bsmith”,则将尝试使用用户 ID bsmith 进行连接。

[Certicom 加密选项] 对话框


此对话框显示客户端 Certicom 加密设置的字段。

[Certicom 加密选项] 对话框具有以下组件:

受信任证书     键入客户机用于鉴定服务器身份的证书文件名。您还可以单击 [浏览] 从文件目录中选择受信任证书。这是一个必需的字段。

证书公司     键入证书发放机构或组织的名称。服务器和客户机的值必须匹配。这是一个可选字段。

证书单元     键入证书单元。也称为组织单元。服务器和客户机的值必须匹配。这是一个可选字段。

证书名     键入证书的公用名。服务器和客户机的值必须匹配。这是一个可选字段。

早前文章 »

首佳软件是专业从事汽修软件、汽配软件、汽车美容软件及4S店管理软件研发和销售的公司,是知名的汽修汽配管理软件供应商.因首佳软件的简单易学易用、性价比高的特性,而广泛应用于全国各地的汽修厂,汽配店,汽车4S店,汽车维修站,汽车美容连锁店等企业. 本博客由 WordPress 所驱动