Sybase数据库性能优化的具体过程

Sybase数据库性能优化的具体过程
Sybase数据库性能优化的具体过程

Sybase数据库性能优化的具体过程

用一个实例讲解了Sybase数据库性能优化的具体过程,具体内容请参考下文:共享锁

sp_getapplock 锁定应用程序资源

sp_releaseapplock 为应用程序资源解锁

SET LOCK_TIMEOUT 1800 锁超时期限设置

sp_configure 'deadlock checking period',5000 设置锁检测周期

sp_configure 'lock wait period',5000 设置锁的等待时间

sp_setrowlockpromote 设置基本个表的最大行锁升级数(锁数)

sp_setrowlockpromote 'TABLE',TREECODE,500,500,100

sp_setrowlockpromote 'TABLE',LCD05,500,500,100

[Lock Manager]

number of locks = 50000 #锁数

deadlock checking period = DEFAULT

freelock transfer block size = DEFAULT

max engine freelocks = DEFAULT

lock spinlock ratio = DEFAULT

lock hashtable size = DEFAULT

lock scheme = DEFAULT

lock wait period = DEFAULT

read committed with lock = DEFAULT

当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。可用sp_object_stats查明死锁位置。该过程报告资源争夺最激烈的10张表、一个数据库中资源争夺的表和单个表的争夺情况。语法为sp_object_stats interval [, top_n [, dbname [, objname [, rpt_option ]]]],查看锁争夺情况只需设置interval为“hh:mm:ss”。如果显示每种锁的争夺程度超过15%,应该改变加锁方式,比如表的全页锁改成数据页锁,数据页锁改成数据行锁等。

Parameter Name Default Memory Used Config V alue Run V alue

-------------- ------- ----------- ------------ ---------

allow remote access 1 0 1 1

print recovery information 0 0 0 0

recovery interval in minutes 5 0 5 5

tape retention in days 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue

-------------- ------- ----------- ------------ ---------

global async prefetch limit 10 0 10 10

global cache partition number 1 0 1 1

memory alignment boundary 2048 0 2048 2048

number of index trips 0 0 0 0

number of oam trips 0 0 0 0

procedure cache percent 20 22426 20 20

total data cache size 0 89698 0 89698

total memory 47104 196608 98304 98304

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

cis bulk insert batch size 0 0 0 0

cis connect timeout 0 0 0 0

cis cursor rows 50 0 50 50

cis packet size 512 0 512 512

cis rpc handling 0 0 0 0

enable cis 1 0 1 1

max cis remote connections 0 0 0 0

max cis remote servers 25 19 25 25

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

dtm detach timeout period 0 0 0 0

dtm lock timeout period 300 0 300 300

enable xact coordination 1 0 1 1

number of dtx participants 500 149 500 500

strict dtm enforcement 0 0 0 0

txn to pss ratio 16 3692 16 16

xact coordination interval 60 0 60 60

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

average cap size 200 0 200 200

caps per ccb 50 0 50 50

dump on conditions 0 0 0 0

maximum dump conditions 10 0 10 10

number of ccbs 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue

-------------- ------- ----------- ------------ ---------

allow sql server async i/o 1 0 1 1

disable disk mirroring 0 0 0 0

disk i/o structures 256 31 256 256

number of devices 10 #5 10 10

page utilization percent 95 0 95 95

Parameter Name Default Memory Used Config V alue Run V alue

-------------- ------- ----------- ------------ ---------

event log computer name LocalSystem 0 LocalSystem LocalSystem event logging 1 0 1 1

log audit logon failure 0 0 0 0

log audit logon success 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue

-------------- ------- ----------- ------------ ---------

esp execution priority 8 0 8 8

esp execution stacksize 77824 0 77824 77824

esp unload dll 0 0 0 0

start mail session 0 0 0 0

xp_cmdshell context 1 0 1 1

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

configuration file 0 0 0 /sybase/hgd

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

enable java 0 0 0 0

size of global fixed heap 300 0 300 300

size of process object heap 300 0 300 300

size of shared class heap 3072 0 3072 3072

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

default character set id 1 0 1 1

default language id 0 0 0 0

default sortorder id 50 0 50 50

disable character set conversi 0 0 0 0

enable unicode conversions 0 0 1 1

number of languages in cache 3 4 3 3

size of unilib cache 0 140 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

deadlock checking period 500 0 500 500

freelock transfer block size 30 0 30 30

lock address spinlock ratio 100 0 100 100

lock hashtable size 2048 48 2048 2048

lock scheme allpages 0 allpages allpages

lock spinlock ratio 85 0 85 85

lock table spinlock ratio 20 0 20 20

lock wait period 2147483647 0 2147483647 2147483647

max engine freelocks 10 0 10 10

number of locks 5000 2344 10000 10000

print deadlock information 0 0 1 1

read committed with lock 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

additional network memory 0 0 0 0

allow resource limits 0 0 0 0

audit queue size 100 42 100 100

average cap size 200 0 200 200

caps per ccb 50 0 50 50

deadlock pipe max messages 0 0 0 0

default network packet size 512 #505 512 512 disk i/o structures 256 31 256 256

enable rep agent threads 0 0 0 0

errorlog pipe max messages 0 0 0 0

event buffers per engine 100 #11 100 100 executable codesize + overhead 0 20261 0 20261 lock hashtable size 2048 48 2048 2048

lock spinlock ratio 85 0 85 85

max cis remote servers 25 19 25 25

max number network listeners 5 868 5 5

max online engines 1 216 1 1

max roles enabled per user 20 #22 20 20 memory per worker process 1024 0 1024 1024 number of alarms 40 3 40 40

number of aux scan descriptors 200 #258 200 200 number of ccbs 0 0 0 0

number of devices 10 #5 10 10

number of languages in cache 3 4 3 3

number of large i/o buffers 6 97 6 6

number of locks 5000 2344 10000 10000 number of mailboxes 30 1 30 30

number of messages 64 3 64 64

number of open databases 12 1239 12 12 number of open indexes 500 512 500 500 number of open objects 500 561 500 500 number of remote connections 20 86 50 50 number of remote logins 20 23 20 20 number of remote sites 10 1729 10 10 number of user connections 25 43141 250 250 number of worker processes 0 0 0 0 partition groups 1024 904 1024 1024 permission cache entries 15 #227 15 15

plan text pipe max messages 0 0 0 0 procedure cache percent 20 22426 20 20 process wait events 0 0 0 0

remote server pre-read packets 3 #83 3 3

size of global fixed heap 300 0 300 300

size of process object heap 300 0 300 300 size of shared class heap 3072 0 3072 3072 size of unilib cache 0 140 0 0

sql text pipe max messages 0 0 0 0

stack guard size 4096 #1108 4096 4096

stack size 86016 #23269 86016 86016

statement pipe max messages 0 0 0 0

total data cache size 0 89698 0 89698

total memory 47104 196608 98304 98304

txn to pss ratio 16 3692 16 16

wait event timing 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

number of open databases 12 1239 12 12

number of open indexes 500 512 500 500

number of open objects 500 561 500 500

open index hash spinlock ratio 100 0 100 100

open index spinlock ratio 100 0 100 100

open object spinlock ratio 100 0 100 100

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

Q diagnostics active 0 0 0 0

SQL batch capture 0 0 0 0

deadlock pipe active 0 0 0 0

deadlock pipe max messages 0 0 0 0

errorlog pipe active 0 0 0 0

errorlog pipe max messages 0 0 0 0

object lockwait timing 0 0 0 0

per object statistics active 0 0 0 0

plan text pipe active 0 0 0 0

plan text pipe max messages 0 0 0 0

process wait events 0 0 0 0

sql text pipe active 0 0 0 0

sql text pipe max messages 0 0 0 0

statement pipe active 0 0 0 0

statement pipe max messages 0 0 0 0

statement statistics active 0 0 0 0

wait event timing 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

additional network memory 0 0 0 0

allow remote access 1 0 1 1

allow sendmsg 0 0 0 0

default network packet size 512 #505 512 512

max network packet size 512 0 512 512

max number network listeners 5 868 5 5

number of remote connections 20 86 50 50

number of remote logins 20 23 20 20

number of remote sites 10 1729 10 10

remote server pre-read packets 3 #83 3 3

syb_sendmsg port number 0 0 0 0

tcp no delay 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

max async i/os per engine 2147483647 0 2147483647 2147483647 max async i/os per server 2147483647 0 2147483647 2147483647 o/s file descriptors 0 0 0 1024

tcp no delay 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

max parallel degree 1 0 1 1

max scan parallel degree 1 0 1 1

memory per worker process 1024 0 1024 1024

number of worker processes 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

additional network memory 0 0 0 0

lock shared memory 0 0 0 0

max SQL text monitored 0 7 0 0

shared memory starting address 0 0 0 0

total memory 47104 196608 98304 98304

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

max online engines 1 216 1 1

min online engines 1 0 1 1

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

enable rep agent threads 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

SQL Perfmon Integration 1 0 1 1

abstract plan cache 0 0 0 0

abstract plan dump 0 0 0 0

abstract plan load 0 0 0 0

abstract plan replace 0 0 0 0

allow backward scans 1 0 1 1

allow nested triggers 1 0 1 1

allow resource limits 0 0 0 0

allow updates to system tables 0 0 1 1

audit queue size 100 42 100 100

cpu accounting flush interval 200 0 200 200

cpu grace time 500 0 500 500

deadlock retries 5 0 5 5

default database size 2 0 2 2

default exp_row_size percent 5 0 5 5

default fill factor percent 0 0 0 0

enable DTM 0 0 0 0

enable HA 0 0 0 0

enable housekeeper GC 1 0 1 1

enable sort-merge join and JTC 0 0 0 0

event buffers per engine 100 #11 100 100 housekeeper free write percent 1 0 1 1

i/o accounting flush interval 1000 0 1000 1000

i/o polling process count 10 0 10 10

identity burning set factor 5000 0 5000 5000 identity grab size 1 0 1 1

license information 25 0 25 25

number of alarms 40 3 40 40

number of aux scan descriptors 200 #258 200 200

number of large i/o buffers 6 97 6 6

number of mailboxes 30 1 30 30

number of messages 64 3 64 64

number of open databases 12 1239 12 12

number of open indexes 500 512 500 500

number of open objects 500 561 500 500

number of pre-allocated extent 2 0 2 2

number of sort buffers 500 0 500 500

page lock promotion HWM 200 0 200 200

page lock promotion LWM 200 0 200 200

page lock promotion PCT 100 0 100 100

partition groups 1024 904 1024 1024

partition spinlock ratio 10 0 10 10

print deadlock information 0 0 1 1

row lock promotion HWM 200 0 200 200

row lock promotion LWM 200 0 200 200

row lock promotion PCT 100 0 100 100

runnable process search count 2000 0 2000 2000 size of auto identity column 10 0 10 10

sql server clock tick length 100000 0 100000 100000 text prefetch size 16 0 16 16

time slice 100 0 100 100

upgrade version 1100 0 12000 12000

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

allow procedure grouping 1 0 1 1

auditing 0 0 0 0

check password for digit 0 0 0 0

curread change w/ open cursors 1 0 1 1

current audit table 1 0 1 1

max roles enabled per user 20 #22 20 20

maximum failed logins 0 0 0 0

minimum password length 6 0 6 6

msg confidentiality reqd 0 0 0 0

msg integrity reqd 0 0 0 0

secure default login guest 0 guest guest

select on syscomments.text 1 0 1 1

suspend audit when device full 1 0 1 1

unified login required 0 0 0 0

use security services 0 0 0 0

Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ ---------

default network packet size 512 #505 512 512

number of pre-allocated extent 2 0 2 2 number of user connections 25 43141 250 250 permission cache entries 15 #227 15 15 stack guard size 4096 #1108 4096 4096 stack size 86016 #23269 86016 86016 systemwide password expiration 0 0 0 0

user log cache size 2048 0 2048 2048

user log cache spinlock ratio 20 0 20 20

-

Sybase数据库教程

系统维护员培训手册 1 第一章 Sybase概述 第一节 C/S简介 CS(Client/Server)结构是传统的网络集中共享式数据库的扩充。在CS结构中,应用程序(客户)在工作站上运行应用程序进行数据处理,服务器程序运行于服务器上以响应客户的请求并维护数据的一致性。CS结构可以显著减少不必要的网络数据传输。 一、CS和文件服务器的区别是: 文件服务器没有计算能力,它不了解数据本身的任何东西,它仅仅用于存储数据,文件服务器可以想象成一台用很长的电缆(网络)与用户计算机相连的硬 盘驱动器。CS的工作方式是客户端发出一个请求(命令),通过网络传送到服务 器,服务器根据这个命令进行计算,把计算后的结果传送给客户端。而文件服务 器的工作模式是工作站从服务器上取得应用程序运行,进行数据处理时到服务器 取数据,然后从所有的数据记录中找到要处理的内容,进行运算,最后才得出结 果。 二、客户/服务器模型的主要特点如下: ●客户进程和服务器进程可以由LAN或广域网(WAN)联结。它们都可以在同 一台计算机上运行。 ●用于在客户和数据库服务器之间通信的基本语言是通过结构化的查询语言 (Structured Query Language)实现的。 三、发展过程 C/S结构是数据库发展的一个过程,跟随计算机的计算机系统结构由集中式主机系统发展到客户/服务器系统以及现在分布式的多层网络系统,数据库系 统的体系结构也大体经历了三种发展形式: ●集中式的主机/终端结构 主机/终端系统中主机运行DBMS及数据库应用,终端仅提供数据显示。 ●两层的客户/服务器结构 在这种结构中,服务器执行数据库的存储逻辑和事务逻辑,客户端执行应用逻辑并提供用户界面。他们从系统上进行划分,均衡负载。 ●三层(或多层)体系结构 这种体系可以看作是客户/服务器结构和Internet(国际互联网络)以及Intranet应用体系结构相结合的产物,它是对客户/服务器的继承和发展。 Internet应用是浏览器/WEB服务器/数据库服务器的三层体系结构。 四、Client/Server模式概述

Sybase 12.5以上版本自带性能监控工具的使用方法

Sybase 12.5以上版本自带性能监控工具的使用方法 Sybase 12.5以上版本的性能监控工具使用 对于实现集中管理信息系统的系统管理员来说,挖掘数据库性能是一个技术活也是一个体力活,因为它不仅仅需要具备一定的数据库基础,还需要耐心的分析-你所管理的财务软件,数据库访问的瓶颈在哪里?你珍贵的cache里面,被你放了多少过气鸡蛋在里面?有多少是需要放在这个宝贝蛋里面,但是却被疏忽掉;到底是那几张大而无当的破表总是导致数据库服务卡来开去;有哪几个臃肿的存储过程比较糟糕,或者使用最多,耗费你宝贵的内存或者io最多;那几个设备最繁忙? 这些问题,以前需要一些昂贵的第三方DBMS管理工具来帮助你找到较为合适的优化方案,但是我相信大部分系统管理员都没有接触过这方面的管理工具,现在,sybase工具也收购了一个管理工具进来,用于应付sybase相对欠奉的性能问题(仅限个人意见),但是它并不是免费的,不过对于sybase12.5以上版本用户来说,sybase已经内置了一个小工具在sybase数据库服务里面,你只需要做非常少量的工作,就可以寻找出来一个最适合自己管理的信息系统业务风格的优化方案。 优化自己的数据库性能,基础就是回答上面的几个问题,这些问题的答案现在可以从montables里面找,sybase 12.5提供了一套完备的监控表,它只需要用sp_configure打开一个选项,sybase就会开启监控机制,不就你就可以从master库里面查询出来这一套表里面的内容,分析出来到底需要优化那些tables或者其他。 下面用unix下面的sybase来举例,该例开启了montables这个监控表。 Step 1:跑到unix主机那里,cd到$sybase/ase/scripts目录。 Step 2:isql -Usa -Ppassword -i installmontables Step 3:可以回到你的客户端那里,当然也可以继续用主机执行命令。 Step 4:sp_configure ‘enable monitoring’,1 Step 5:把一个或者多个财务软件用户(如果财务软件用户编号是0001,你的databases名字是cwbase1,那么该财务软件用户实际映射到数据库用户编号是cwbase1_0001,那么你不要操作0001用户,而是要操作cwbase1_0001用户)加入到组里面:mon_role, Step 6:现在sybase已经开始在运作性能监控了,建议最好在业务繁忙的时候打开monitoring选项,这些

sybase基本操作

SYBASE基本操作 一、启动数据库 1、ps -ef | grep dataserver 查看sybase进程, Sybase有数据库进程和备份进程, 若都没看到则需要手动启动,进入sybase安装目录$sybase/ASE-15_0/install 启动数据库和备份进程 # ./startserver -f RUN_LINUXMZC --启动数据库RUN_”SYBASENAME”#./startserver -f RUN_LINUXMZC_BS --启动备份服务“RUN_backupserve” 启动后也可用#showserver查看 2、登录数据库 数据库启动后使用#isql -Usa -P -S 登录数据库, 注:sybase默认只有一个用户sa,默认密码NULL

二、sybase基本操作 1、查询数据库版本 >select @@version >go 注:isql中的命令都需要go来执行,如果发现写错了,可以用reset重新输入 2、查询数据库信息 >sp_helpdb 显示所有数据库和基本信息 3、查寻空间使用情况 >use basename >go >sp_spaceused >go

4、性能监控 使用指令sp_sysmon 格式:>sp_sysmon “hh:mm:ss”,model_name,表示监控指定时间指定模块,缺省为所有模块 1、内核管理(kernal ) 10、任务管理(taskmgmt) 2、应用管理(appmgmt) 11、监视器访问SQL的执行(monaccess) 3、数据缓存管理(dcache) 12、并行查询管理(parallel) 4、ESP管理(esp) 13、过程缓存管理(pcache) 5、索引管理(indexmgmt) 14、恢复管理(recovery) 6、锁管理(locks) 15、事务管理(xactmgmt) 7、内存管理(memory) 16、磁盘I/O管理(diskio) 8、元数据高速缓存管理(mdcache ) 17、工作进程管理(wpm) 9、事务概要(xactsum) 18、网络I/O管理(netio)

sybase性能诊断

文章描述了通过sp_sysmon对Adaptive Server系统运行情况有一个全面系统了解,有利于更好地熟悉系统性能,更为有效地进行系统管理,合理地利用和配置系统资源,达到系统性能调优的目的。 从18个方面了解在用系统性能状况,并在适当的时候利用环境参数进行性能调优: 1、内核管理(kernal) 2、应用管理(appmgmt) 3、数据缓存管理(dcache) 4、ESP管理(esp) 5、索引管理(indexmgmt) 6、锁管理(locks) 7、内存管理(memory) 8、元数据高速缓存管理(mdcache) 9、任务管理(taskmgmt) 10、监视器访问SQL的执行(monaccess) 11、网络I/O管理(netio) 12、并行查询管理(parallel) 13、过程缓存管理(pcache) 14、恢复管理(recovery) 15、事务管理(xactmgmt) 16、事务概要(xactsum) 17、磁盘I/O管理(diskio) 18、工作进程管理(wpm) 括号后英文短词是该模块参数。 环境: 1、用户数据库中有练习所用数据表auths和article 2、数据表各有10万行数据 3、用户具有查询、修改、删除等基本的数据库表操作权限 步骤:执行sp_sysmon “00:10:00”(server级系统存贮过程,不需要打开某个数据库),或者执行如下格式的过程,查看具体操作批命令对应系统性能情况: sp_sysmon begin_sample SQL语句或者存贮过程 sp_sysmon commit_sample 本实验采用sp_sysmon “hh:mm:ss”,性能模块名。 结论:通过此练习,可了解当前系统在各方面的系统运行状况,性能出现什么问题和不平衡不协调之处,学会使用相应的参数和措施进行解决和调优,不断比较对照调整前后的性能状况,最终

Sybase数据库管理手册

Sybase数据库管理手册

目录 Sybase 数据库安装说明 (3) 一、安装前准备工作 (3) 二、安装主程序 (3) 三、安装后打补丁 (6) 四、重启后创建Sybase服务 (6) 五、字符集设置 (11) 六、还原HIS数据库 (13) 七、Sybase服务不能启动时 (19) 八、配置参数 (21) 客户端安装说明 (29) 一、安装客户端 (29) 二、配置客户端 (29) Sybase 数据库的备份、恢复 (29) Sybase 数据库维护 (30) Sybase数据常用命令的使用 (31)

Sybase 数据库安装说明 一、安装前准备工作 ●先将Sybase安装文件夹(ASESERVER)拷贝到要安装的机器硬盘上。(此文件夹下文中都 用d:\Tooll\ASESERVER) ●将Sybase的补丁拷贝到要安装的机器硬盘上 ●处理安装时的字符集问题(防止安装时出现乱码) 对于不同的Windows版本的操作系统Sybase都要进行字符集文件的修改,下面是不同 二、安装主程序 ●进入安装程序 完成安装前的准备工作后就可以双击D:\TOOLS\ASESERVER\setup.exe文件进入Sybase安装程序。

●确定安装目录 选择安装目录是不要选择有磁盘阵列或做了Raid的盘,也不要选择操作系统所在的磁盘。 ●选择安装组件 ●安装总结

在总结处要注意所需空间是不是小于可用空间,如果不是则要将安装的磁盘清除一些文件来达到所需空间。单击“下一步”进行安装进行状态 ●安装进度 ●录入注册信息

●重启提示 完成安装后提示是否重新启动机器,按否不重启机器。然后将补丁拷贝到安装目录。 三、安装后打补丁 将\ASE补丁\ebf11574\Server目录下的所有文件拷贝到Sybase安装目录下例如安装目录为C:\Sybase 将C:\sybase\shared-1_0\jre1.2.2\lib\font.properties.zh.NT5.2文件名改名,操作系统与文件名的配对关系参考安装前准备工作的配对关系。 四、重启后创建Sybase服务 ●重启机器后进入Sybase安装程序确定提示按“否”后进行Windows操作系统 ●进行操作系统的运行窗口录入CMD进入Dos操作界面

Sybase数据库死锁对策

Sybase 数据库死锁对策 死锁的发生对系统的性能和吞吐量都有重要影响,经检测发现,管理信息系统的死锁主要是因为两个或多个线程(登录)抢占同一表数据资源。引起长时间抢占同一资源不是因为我们需要处理的事务太复杂,时间太长,而往往是因为我们在前端应用程序对数据库作操作时忘了提交.本文介绍一种处理解决这种死锁的方法。 Sybase 封锁原理 数据共享与数据一致性是一对不可调和的矛盾,为了达到数据共享与数据一致,必须进行并发控制。并发控制的任务就是为了避免共享冲突而引起的数据不一致。Sybase SQL Server 并发控制的方法是加锁机制(LOCKING ). 锁的类型 Sybase SQL Server 有三种封锁类型:排它锁(exclusive lock,简称X 锁);共享锁(share lock,简称S 锁);更新锁(update lock,简称U 锁)。这三种锁的相容矩阵表如下: ×:表示不兼容。∨:表示兼容。 Sybase SQL Server 是自动决定加锁类型的。一般来说, 读(SELECT )操作使用S 锁,写(UPDATE,INSERT 和delete )操作使用X 锁。U 它在一个更新操作开始时获得,当要修改这些页时,U 锁会升级为X 锁。 锁的力度 SQL Server 有两级锁:页锁和表锁。通常页锁比表锁的限制更少(或更小)。页锁对本页的所有行进行锁定,而表锁则锁定整个表。为了减小用户间的数据争用和改进并发性,SQL Server 试图尽可能地使用页锁。 当SQL Server 决定一个语句将访问整个表或表的大多数页时,它用表锁来提供更有效的锁定。锁定策略直接受查询方案约束,如果update 或delete 语句没有可用的索引,它就执行表扫描或请求一个表锁定。如果update 或delete 语句使用了索引,它就通过请求页锁来开始,如果影响到大多数行,它就要请求表锁。一旦一个语句积累的页锁超过锁提升阈值,SQL Server 就设法给该对象分配一个表锁。如果成功了,页锁就不再必要了,因此被释放。表锁也在页层提供避免锁冲突的方法。对于有些命令SQL Server 自动使用表锁。 锁的状态 SQL SERVER 加锁有三种状态: 1)意向锁(intend )—是一种表级锁,它表示在一个数据页上获得一个S 或X 锁的意向。意向锁可以防止其他事务在该数据页的表上获得排它锁。 2)阻塞(blocking,简记blk )—它表明目前加锁进程的状态,带有blk 后缀的锁说明该进程目前正阻塞另一个需要获得锁的进程,只有这一进程完成,其他进程才可以进行。 3)需求锁(demand )—表示此时该进程企图得到一个排它锁。它可以防止 可申请的锁 已有的锁 S U X S ∨ ∨ × U ∨ × × X × × ×

sybase性能优化的建议

最近优化了两个单位的数据库,通过跟踪后SYBASE都建议将命名Cache的cache replacement policy改为relaxed LRU replacement。 经过在这两个数据库的表现来看,的确获得了一定的效果,我觉得可能目前使用CACHE 的单位都会存在这么个问题,现将有关过程写一下与大家共享: 1、通过sp_sysmon ’00:05:00’得到连续5分钟内SYBASE 性能监控信息,分析SYBASE给出的 建议; 2、若有对命名Cache的优化建议,多数会建议使用relaxed LRU replacement;再有某些会 要求使用大I/O;修改方法可以是直接修改SYBASE.cfg文件中的相关内容,以ACCBJE_cache为例如下: [Named Cache:ACCBJE_cache] cache size = 16M cache status = mixed cache cache replacement policy = relaxed LRU replacement //直接将DEFAULT或其他任何内容为改为relaxed LRU replacement 即可 local cache partition number = DEFAULT 3、检查某些number of xxxx参数,有些设置的太大,可能没必要,比如锁,我认为几万可 能就能满足了,太大可能会占用太多内存(当然也可能是只有真正有那么多锁时才会占用,这点我没有确认),我所优化的这几个数据库开始都是几十万,可能完全没有必要。 另外,对于性能问题来说,通过sp_sysmon会得到很多信息,大家可以通过自己分析查找问题原因。 通过在wisql中,先执行dbcc traceon(3604)后,再执行dbcc sqltext(进程ID)可以得到该进程正在执行的SQL语句,对于查找问题也会有帮助,不过这个有时得到的SQL不全,不过可以作为参考了。

sybase资料

关于Sybase ASE数据库的license以及试用版过期的问题的解决方案 作者:佚名来源:中国自学编程网收集整理发布日期:2009-02-18 当用户从Sybase官网上下载了ASE15.0.2以后,如果选择了安装Express Edition或者Developer Edition,基本上不会碰到什么问题,除了有些功能受限以下。 但大多数可能选择了Enterprise Edition for Evaluation类型,即企业版试用。都会碰到这样的问题,即一个月以后,license过期,无法启动server。于是很郁闷,可能大部分人,会选择卸载再重新安装一遍,这样当然没问题,只是,太浪费时间了。 有一段时间,我自己甚至也以为只能这样去解决了。 实际上不是,通过在sybase论坛上与一些有经验的人交流以后,发现,是可以切换的。 首先,有三种安装类型: 1. Express Edition,完全免费,不用缀述。 2. Developer Edition,没有使用期限限制,用于开发和测试。似乎不能商用,无所谓了。我也是刚得知。以前好像是有60天的限制。 3. Enterprise Edition,它是有试用时间的限制的。是30天。 只要能找到切换就OK了。 你的解决方法就是,把企业版的license切到开发版或者Express版。怎么切? 先看看目录$SYBASE/SYSAM-2_0/licenses下边的三个文件: SYBASE_ASE_DE.lic SYBASE_ASE_XE.lic 第一个文件里边有这样的内容: PE=DE;LT=DT 第二个文件里有这样的内容: PE=XE;LT=CP

SYBASE数据库故障处理方法

SYBASE数据库故障处理方法 Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1. 修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2. $ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3. 用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1> update master..sysdatabases 2> set status = -32768 where name =‖ sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库 重新启动. 4.用 isql 登录到sql server 中,修改 master库中sysdatabases 表中 sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖ sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5. 将Sybase.cfg 中的‖allow updates to system‖ 的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp

MySQL数据库性能(SQL)优化方案-期末论文

高级数据库技术——期末论文 基于SQL查询的MySQL数据库性能优化研究 :XX 学号:2014XXXXX 学院:计算机学院

摘要: 查询是数据库系统中最基本也是最常用的一种操作,是否具有较快的执行速度,已成为数据库用户和设计者极其关心的问题。在研究开源数据库管理系统MySQL 查询优化技术的基础上,主要结合传统SQL操作优化、深度分析 MySQL 源代码、现代数据库发展几方面进行诸如参数调优,MySQL关联查询,重写相关规则等容展开优化分析研究。 关键词:查询优化,查询重用,查询重写,计划优化

一、传统SQL查询优化操作 1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。 另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOT NULL,这样在将来执行查询的时候,数据库不用去比较NULL值。 对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。 2.使用连接(JOIN)来代替子查询(Sub-Queries) MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。例如,我们要将客户基本信息表中没有任何订单的客户删除掉,就可以利用子查询先从销售信息表中将所有发出订单的客户ID取出来,然后将结果传递给主查询,如下所示: DELETE FROM customerinfo WHERE CustomerID NOT in (SELECT CustomerID FROM salesinfo ) 使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、Sybsystemprocs 库“挂起”解决办法 1.修改Sybase.cfg 文件,修改Sybase 数据库可以修改系统参数. 2.$ vi Sybase.cfg 查找―allow updates‖ ,将其修改为1.(缺省值为0). 既allow updates to system tables=1 重新启动系统. 3.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =‖sybsystemprocs‖ 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用 isql 登录到sql server 中,修改master库中sysdatabases 表中 sybsystemprocs 库对应的status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =‖sybsystemprocs‖ 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 5.将Sybase.cfg 中的‖allow updates to system‖的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /directory.spec/devs -Usa -P -c $bcp master..sysdatabases out /directory.spec/dbs -Usa -P -c $bcp master..sysusages out /directory.spec/usages -Usa -P -c

最新Sybase数据库性能调优

S y b a s e数据库性能调 优

Sybase数据库性能调优

1.5 用sp_sysmon可以得到数据库系统的性能基准报告,但要在比较稳定的状态下产生,方可作为参考和对照的依据。 1.6 理解存储方法 只有清楚数据库存储数据的底层细节,如数据页、索引页的物理结构,每一行的大小计算,不同类型列占用的宽度等等问题,才能对各种调优措施有个深入领会。关于这个问题,比较复杂和细致,请自行参阅有关书籍。 一般地,对于更改数据的操作,要尽量促进数据库进行直接更新( Direct Updates ),所以要遵守以下几条原则: 1)除非必要,避免使用允许null值的列和可变长度的列。 2)如果varchar 和varbinary 列填充得比较满,毫不犹豫转成 char 和binary 列。 对于建表时指定的页填充率(page fillfactor)参数,要权衡确定数值大小。一般:小值,适合于有许多随机插入的表,该表的数据经常被删除,又经常被增

加;大值,适合于大多数的数据被增加到表末尾,如客票系统的售票存根和退票存根表。 2 SQL Server级的调优 2.1 管理共享内存 数据库性能优化的首要方面是最优管理内存。数据库占用的共享内存分成数据缓冲(data cache)、存储过程缓冲(Procedure cache)等几块。在isql 下使用 sp_configure 'cache' 可以看到存储过程缓冲所占百分比(procedure cache percent),整个数据缓冲大小(total datacache size)等参数。 2.1.1 存储过程缓冲(Procedure cache) 存储过程缓冲保持以下对象的查询计划: Procedures :存储过程 Triggers :触发器 Views :视图 Rules :规则 Defaults :缺省 Cursors :游标 存储过程不可重入,意即每个并发用户调用都会在内存中产生一个拷贝。Procedure, triggers, and views 当它们被装载到procedure cache中时,被查询优化器优化,建立查询计划。如果存储过程在缓冲中,被调用时就不需要重新编译。如果procedure cache太小,存储过程就会经常被其他调入内存的存储过程冲洗掉,当再次被调用时,存储过程又被调入内存,再重新编译,用户

Sybase数据转成SqlServer数据库的步骤

Sybase数据转成Sql Server数据库的执行步骤: 目前我们采用Sql Server 的DTS工具实现数据的交换操作。 一、前期准备:在目标数据库形成跟原数据库完全相同的表结构。 1,需要将客户备份的sybase数据库恢复到我们sybase帐套中,形成原数据库。 2,在Sql Server数据库中建立目标数据帐套,利用帐套维护工具建立目标数据库,选择模块与原数据库所用模块相同即可,初始年度与原数据库的初始年度也要相同。 创建完数据库后,如果原数据库有历史年度数据,则在目的数据库上的相应模块也做年结操作形成相应的历史年度表。主要通过察看数据库中那些表带有历史年度后缀,那些模块需要年结需要根据具体数据库设置。 3,删除所有用户表中的记录。 删除步骤,登陆原数据库,根据下面语句形成删除表记录sql。 select 'truncate table '+name +' go' from sysobjects where type = 'U' order by name 把执行结果复制到EditPlus中去,在go前增加换行符,形成删除表记录的sql语句。 4,在目标数据库中执行这些删除记录的sql语句,将目标数据库的相应记录删除。 并注意查看出错语句,主要是表不存在的情况下报的错误。 并决定那些表可以不需要,记录下不需要的表。 针对原数据库: 5,利用报表优化工具做临时表清除工作,以便节省交换时间。 二、数据导入操作: 利用DTS工具做数据交换操作。 执行步骤如下: 1,运行DTS,按照下一步执行即可。 2,配置数据源,我们这里是sybase数据库做数据源。 数据库类型选择sybase ASE OLE DB Provider 3,点击属性,配置数据库连接。数据源中输入syboledb,一定确保之前利用备份恢复工具(DBGhost.exe)联接过sybase数据库一次。 4,配置目标数据库这里选择sql server数据库。 5,选择复制表和视图。 6,选择表和视图。把不需要交换的表前面不需要选择即可,另外视图也不需要选择。 7, 8,执行 9,最后看以下执行结果,找到出错原因。 10,针对每一条出错的表,定位错误原因,然后单独把出错的表再导入一次。 注意问题: 由于sybase数据库大小写区分,而sqlserver数据库默认不区分大小写,有可能会出现复制数据违反唯一索引的问题。 解决方式有二: 删除通过大小写区分不一致的记录。 创建的sql server 实例也选择区分大小写。

SYBASE数据库常见的问题总结

SYBASE 数据库常见问题总结 SYBASE 数据库常见问题总结 ..................................................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 .................... 错误!未定义书签。 2. 数据库日志损坏时重建日志启动数据库的解决办法.............................. 错误!未定义书签。 3. 数据库处于可疑状态的解决方法.............................................................. 错误!未定义书签。4.Sybase系统崩溃了,没有备份,但设备文件还存在,如何恢复数据库?错误!未定义书签。 5.不小心直接删除了日志的设备文件,如何恢复数据库?..................... 错误!未定义书签。6.sa密码忘记了导致isql -Usa -P******进不去怎么办?......................... 错误!未定义书签。7.关于sybase的配置-(数据库慢的请留意) ........................................ 错误!未定义书签。8.设备路径更改的方法................................................................................. 错误!未定义书签。9.dump文件load后数据库访问不了解决办法........................................ 错误!未定义书签。10.sybase数据库备份方案........................................................................... 错误!未定义书签。11.master数据库状态被置为-32768后的处理方法 ................................... 错误!未定义书签。 1. SYSLOGS日志满了进不了系统,如何清除日志启动系统 业务系统数据库不能正常启动,对于这一类问题,我们按照如下步骤解决: 第一步,启用allow updates to system tables,这样可以使具有系统管理员角色的用户能够改变系统表并可创建和修改系统表的存储过程,其中系统表包括master数据库中所有Sybase 提供的表以及用户数据库中所有以“sys”开头的表和在sysobjects表中其ID值小于或等于100的表。系统表的不正确变更会导致数据库损坏和数据丢失,修改系统表时务必要使用begin transaction来保护数据库不受可能损坏数据库的错误影响,完成修改后应立即禁用allow updates to system tables。 1>sp_configure "allow update",1 2>go 第二步,Adaptive Server中的每个数据库在sysdatabases中都有相应的一行,安装Adaptive Server后,master数据库、model数据库、sybsystemprocs和tempdb数据库在sysdatabases 中都将有相应的条目,如果已经安装审计功能,sybsecurity数据库也将在其中有相应的条目。修改sysdatabases表,将testdb的状态修改为-32768,然后在关闭Adaptive Server后重新启动Adaptive Server。 1> update sysdatabases set status=-32768 where name = "testdb" 2>go 1>shutdown 2>go 第三步,由于事务日志已经很满,不能使用常规方法转储此事务日志,如果使用了dump

Sybase数据库故障处理方法

Sybase数据库故障处理方法 一、 Sybsystemprocs 库“挂起”解决办法 1.修改文件,修改Sybase 数据库可以修改系统参数. 2.$ vi 查找“allow updates” ,将其修改为1.(缺省值为0). 既 allow updates to system tables=1 重新启动系统. 3.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为-32768. $isql –Usa –P 1>update master..sysdatabases 2>set status = -32768 where name =”sybsystemprocs” 1>go 1>shutdown with nowait 2>go 关闭数据库重新启动. 4.用isql 登录到sql server 中,修改 master库中sysdatabases 表中sybsystemprocs 库对应的 status 的值为0. $isql –Usa –P 1>update master..sysdatabases 2>set status = 0 where name =”sybsystemprocs” 3>go 1>shutdown with nowait 2>go 关闭数据库重新启动.

5.将中的”allow updates to system”的值改为0. 二、如何恢复master数据库 ASE can't setup and has no valid dump of master 1、编辑RUN_servername 在命令行最后加入:-T3607 2、单用户模式启动ASE $cd install $startserver -f RUN_servername -m 3、bcp out系统表 $bcp master..sysdevices out /devs -Usa -P -c $bcp master..sysdatabases out /dbs -Usa -P -c $bcp master..sysusages out /usages -Usa -P -c $bcp master..syslogins out /logins -Usa -P -c $bcp master..sysconfigures out /configures -Usa -P -c $bcp master..syscharsets out /charsets -Usa -P -c 4、shutdownASE 5、创建新master设备 $buildmaster -d -s (new_master_device_size以2K为单位) 6、编辑RUN_servername 将指定master设备指定为新创建的master设备,并删除在第1步中增加的参数。 7、删除/dbs、/usages文件中有关master、tempdb、model的内容。

Sybase数据库性能优化的具体过程

Sybase数据库性能优化的具体过程 用一个实例讲解了Sybase数据库性能优化的具体过程,具体内容请参考下文:共享锁 sp_getapplock 锁定应用程序资源 sp_releaseapplock 为应用程序资源解锁 SET LOCK_TIMEOUT 1800 锁超时期限设置 sp_configure 'deadlock checking period',5000 设置锁检测周期 sp_configure 'lock wait period',5000 设置锁的等待时间 sp_setrowlockpromote 设置基本个表的最大行锁升级数(锁数) sp_setrowlockpromote 'TABLE',TREECODE,500,500,100 sp_setrowlockpromote 'TABLE',LCD05,500,500,100 [Lock Manager] number of locks = 50000 #锁数 deadlock checking period = DEFAULT freelock transfer block size = DEFAULT max engine freelocks = DEFAULT lock spinlock ratio = DEFAULT lock hashtable size = DEFAULT lock scheme = DEFAULT lock wait period = DEFAULT

read committed with lock = DEFAULT 当很多事务同时访问同一个数据库时,会加剧锁资源争夺,严重时事务之间会发生死锁。可用sp_object_stats查明死锁位置。该过程报告资源争夺最激烈的10张表、一个数据库中资源争夺的表和单个表的争夺情况。语法为sp_object_stats interval [, top_n [, dbname [, objname [, rpt_option ]]]],查看锁争夺情况只需设置interval为“hh:mm:ss”。如果显示每种锁的争夺程度超过15%,应该改变加锁方式,比如表的全页锁改成数据页锁,数据页锁改成数据行锁等。 Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ --------- allow remote access 1 0 1 1 print recovery information 0 0 0 0 recovery interval in minutes 5 0 5 5 tape retention in days 0 0 0 0 Parameter Name Default Memory Used Config V alue Run V alue -------------- ------- ----------- ------------ --------- global async prefetch limit 10 0 10 10 global cache partition number 1 0 1 1 memory alignment boundary 2048 0 2048 2048 number of index trips 0 0 0 0 number of oam trips 0 0 0 0 procedure cache percent 20 22426 20 20 total data cache size 0 89698 0 89698 total memory 47104 196608 98304 98304

Sybase数据库与sql server的区别

Sybase数据库与sql server的区别 目前目前大型的数据库都采用oracle,中小型的用sqlServer,建议用sqlserver或者mysql。 sybase与sqlsrver的内在区别就是: 1.Sybase没有用户自定义函数。 2.判断fetch成功的全局变量是@@SQLstatus,而不是@@fetch_status。 3.没有set,赋值与查询通用select。 4.没有top,返回N行要使用set rowcount N / set rowcount 0 5.raiserror 22009 " "--> raiserror( ' ',16,1) 6.游标一定要在过程中使用,不能单独在查询中使用。 7.销毁游标要加cursor关键字.如:deallocate cursor cur_tmp 8.没有bigint类型。 9.create table #t(id numeric(12,0) identity not null),不支持int型,且不能设置起始值和步进值。 10.不能alter一个存储过程,要先drop掉再create。 11.没有len函数,使用char_length或datalength等效。 12.通过sysindexes中的doampg列可返回某表的行数,rowcnt(doampg) 。 13.convert函数没有120格式(yyyy-mm-dd hh:mm:ss),需要

使用 select convert(char(4),datepart(year,getdate()))+ '- '+right ('0'+convert(varchar(2),datepart(month,getdate())), 2)+'-'+right('0'+convert(varchar(2),datepart(day,ge tdate())),2)+ ' '+convert(char(10),getdate(),8) 14.charindex不能从被查找字符串中按指定位置查找某字符串。 15.不能使用rtrim函数将数值型转为字符型。 16.没有cast函数,数值型到字符型转移使用select convert(varchar(10),123) 17.没有replace函数。 18.没有left函数,只有right函数。 19.不支持在字段上加[]。 20.select语句中不支持变量累加,例如:select @SQL=@SQL+colname from tablename 21.在过程及视图中系统会自动将select * 变为select 列1,列2... 22.varchar最大支持16384个字节(SQLServer中是8000) 。 23.Sybase不支持表变量。 24.Sybase不支持instead of触发器。 25.Sybase没有调度(注:定时执行某个操作) 。

相关文档
最新文档