有关Sybase的几个问题

hkzhou 2003-08-14 05:13:05
在大型数据库开发中,我有几个问题不清楚 希望有经验的高手能不吝指教。
1:聚簇索引(clustered indexes)和非聚簇索引(unclustered indexes)创建和使用中该注意哪些问题?
2:存储过程中使用case when 语句是不是效率不高?
3:编写存储过程中,应该采用哪些优化策略,有哪写避忌?
...全文
43 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hkzhou 2003-08-16
  • 打赏
  • 举报
回复
楼上 哪里有关于这些的书下载呀?我那本e文书 看起头痛的很 谢谢了哈
duttian 2003-08-15
  • 打赏
  • 举报
回复
楼上说的不错。tempdb是挺重要的最好优化一下。
yhbttfile 2003-08-15
  • 打赏
  • 举报
回复
呵呵~~~数据的基本知识都不知道,怎么去谈数据库调优和设计。
还是从基本开始吧。如,索引如何工作?怎样看存储过程的执行计划?怎样模拟数据,使用监控工具采集数据?为什么表叫堆表?什么叫APL和DOL表?。。。
这些都了解了吗?这些东西都不了解,最好先补补,通过在BBS上来问这些问题是不大能提高你的设计能力的。这里的朋友可能只能给你泛泛的谈些。

至于tempdb的问题,下面这些问题需要补充:
1)空间要合适大,可以容纳下你的一次查询过程的所有临时表;
2)最好为tempdb创建多个单独设备;
3)如果条件允许,可以把其创建在专门的快速设备上;
4)tempdb不要和自己的业务数据库使用相同的设备;

。。。 实在想不起来还有哪些需要注意了。

hkzhou 2003-08-15
  • 打赏
  • 举报
回复
up
hkzhou 2003-08-15
  • 打赏
  • 举报
回复
tempdb除了要设置一个合适的空间,还哪些地方要对其优化一下?


索引的结构是不是就是一个指针链表??


hkzhou 2003-08-15
  • 打赏
  • 举报
回复
楼上的大哥能不能详细介绍优化器原理,我对这东西概念上还不是很清晰。拜托!
dennis2001 2003-08-15
  • 打赏
  • 举报
回复
关于一个表是否需要建立cluster index或者noncluster index的问题,需要根据你将如何使用这个表来定。这需要你理解sybase的数据存放原理,查询原理和优化器原理,很难一两句话说清。简单讲,cluster index按照索引健值顺序存放数据,有如下好处,1、可以减少insert时的尾页竞争;2、对于order by < >等一次返回多条记录的查询有非常明显的改善。但也有不利地方,如表需要经常对健值进行修改时,会使性能降低。
dennis2001 2003-08-15
  • 打赏
  • 举报
回复
存储过程中的case when确实会对性能影响非常大,尤其是如果case的判断中有变量的话,优化器在存储过程的编译时很难做出正确的选择。如果性能对你很重要的话,就尽量不要用case when句式。
edarw 2003-08-15
  • 打赏
  • 举报
回复
个人经验,系统级的调优设置完成后,在每个存储过程编写完后用showplan看一下,确认使用的数据库对象、执行流程以及是否用到索引等等,否则即使你的前期系统调优参数设置再好,如果一个环节没做好会功亏一篑。
hkzhou 2003-08-15
  • 打赏
  • 举报
回复
up
yhbttfile 2003-08-14
  • 打赏
  • 举报
回复
1:聚簇索引(clustered indexes)和非聚簇索引(unclustered indexes)创建和使用中该注意哪些问题?
一般一个表都需要创建一个聚簇索引,如果一个表没有索引,则就成了堆表,容易产生插入热点(附加影响就是可能产生很多锁和产生页链错误)。聚簇索引没有索引页级,或者页级就是数据记录本身。
2:存储过程中使用case when 语句是不是效率不高?
可能优化程序已经做了处理,SYBASE在编译存储过程中会启动优化策略。就像C++编译器一样,会优化程序。可能CASE WHEN就变成几个IF THEN ELSE语句了。我觉得没有效率的影响。
3:编写存储过程中,应该采用哪些优化策略,有哪写避忌?
编写存储过程中,可能一下几个方面需要考虑:
1)不要使用非常高级别的锁;
2)事务过程中,特别是使用到了游标的事务,最好是在一个游标处理完成以后进行一次COMMIT或者ROLLBACK操作,这样可以很快释放锁给其他链接使用,避免死锁,提高效率;
3)在存储过程中,尽量使用索引字段作为查询条件或者关联条件或者排序ETC;--本规律是优化策略,不仅仅使用于存储过程
4)使用合适的tempdb空间,因为在存储过程中产生的临时表,如关联或者排序产生的临时表都是传剑在tempdb中的。

其他的,我也说不上来了,请高手继续补充。



boyfu 2003-08-14
  • 打赏
  • 举报
回复
楼上的也可以给点介绍啊
有时候看那些厚厚的资料
醒悟不过来的
就提醒点哦
关注这个问题哈
crazyjava168 2003-08-14
  • 打赏
  • 举报
回复
最好读读(红皮书)SYBASE11,上面讲的非常清楚!

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧