oracle基础知识入门 oracle数据库( 三 )
禁忌14:选择用nowait更新
挑选...for update语句是保证事务完整性的必要条件,但在并发环境中,该语句的应用很可能导致数据库锁甚至死锁 。正确的方法是选择...对于update nowait,当锁获取失败时,应该有一个重新处理机制 。
禁忌15:批量任务要控制事务提交的频率 。
当后台进程或存储过程处理大量数据时,事务提交禁止单独提交或全部完成后提交 。过于频繁的提交会导致数据库日志过多,一次性提交容易导致回滚段不足 。建议使用100、500或1000次提交的频率 。
禁忌16:使用顺序
对于一些表的内部键ID字段,比如序列号,使用sequence是一个非常好的想法,可以有效保证这种序列号分配在并发环境下的效率和唯一性 。但是,在应用中使用顺序时,需要注意几点:
长度设置要充分考虑业务发展速度 。有效序列初期增长缓慢,但随着业务发展会快速增长 。因此,应充分评估开发和设计,以防止序列很快耗尽 。
对于长期增长的序列号,最后用时间戳+序列号作为字段值,防止序列号翻转;
在分配序列号时,由于序列号在不同数据库实例中的缓冲机制,后面的数据记录的序列号可能小于前面插入的记录的序列号,因此序列号字段的值只能作为唯一键值,不能作为业务排序的依据 。
禁忌17:小心使用rowid更新数据
Rowid是数据库记录的内部记录id 。使用rowid访问数据比普通索引更高效 。但是如果一个表的数据被频繁的插入和删除,就不要用rowid来操作数据,因为Oracle的rowid在数据有删除机制的情况下有一定的被重复的概率 。
禁忌18:谨慎使用子查询 。
SQL对于子查询嵌套查询数据的可读性是好的,但是子查询容易导致全表扫描,容易导致回滚段或者临时表空的过度使用 。因此,应该谨慎使用子查询,尤其是当子查询的结果集也非常大时 。
禁忌19:避免使用SELECT *
在查询SQL语句中,尽量减少返回的结果行数,包括行数和字段列数 。返回的结果越大,相应SQL语句的逻辑读取就越多,对服务器性能的影响也就越大 。
一个特别不好的设计是用SELECT *返回表的所有数据,这样不仅影响服务器的性能,还可能因为在编译阶段找不到表结构的调整而造成运行时错误 。
禁忌20:小心20:where子句!= or运算符
用!= or表示对相应字段的访问不会使用索引,所以只会在其他字段已经使用索引的基础上使用!= or运算 。
禁忌21:在21:where子句中谨慎使用like
如果字段A如“%xxx%”或字段A如“% xxx%”用于匹配where语句中的结果记录,则该索引将不会用于该字段 。所以像“% xxx%”这样的字段A或者像“% xxx%”这样的字段A,只有在其他字段都有索引的基础上才会被使用,也就是禁止与前导百分号匹配 。
禁忌22:在22:where子句中小心使用in和not in
如果in之后有更多的结果,很可能会导致全表扫描 。因此,它只能与其他可以使用索引的条件结合使用 。
禁忌23:在WHERE语句中小心使用字段函数
应尽可能避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引并扫描整个表 。不要在where子句中的“=”左侧执行函数、算术运算或其他表达式运算,否则系统可能无法正确使用索引 。
禁忌24:避免使用选择计数(*)
Select count(*)不如select count(1)有效 。
禁忌25:访问索引字段时要小心使用OR
通过在索引字段中使用OR字,可以很容易地扫描整个表 。必须判断多个值可以分解成多个查询,多个查询可以通过UNION连接 。
禁忌26:仔细考虑字符集
在应用系统中,涉及到应用服务器的主机字符集、数据库字符集和客户端字符集的兼容性 。应该在系统架构中考虑,保证前台到后台到数据库的字符集兼容 。
禁忌27 。小心使用视图嵌套
最好在表上构建视图,尽量不要基于视图嵌套构建视图 。一方面,嵌套的视图一般不超过两个是可取的,这会降低视图嵌套层次的多路访问效率,恶化可维护性 。
禁忌28:避免数据对象名称太长 。
Oracle的表名、字段名等对象的命名字节数限制为30字节,不能超过30字节 。
禁忌29:在设置表和索引的inittrans时要小心
每个块都有一个块头 。该块的标题中有一个交易表 。将在事务表中建立一些条目来描述哪些事务锁定块上的哪些行/元素 。此事务表的初始大小由对象的INITRANS设置指定 。对于表,该值默认为2(索引的INITRANS也默认为2) 。transaction表会根据需要动态扩展,最多有MAXTRANS个条目(假设块中有足够的空闲空空间) 。每个分配的事务条目需要在块头中占用23 ~ 24字节的存储空 。注意,对于Oracle及以上版本,MAXTRANS将被忽略,所有段的MAXTRANS都是255 。
推荐阅读
- ps教程零基础入门 ps快捷键
- 周易算命怎么入门 周易如何算卦
- 交而不泄的训练方法 硬气功入门
- 厨师刀工基础刀法入门 蓑衣刀法
- 进阶|刚入门的小白,如何收藏纸币
- 初学者游泳入门基础教学视频 游泳视频教程
- 国画花鸟画入门教程 花鸟画图片
- linux入门基础教程 linux系统界面
- 初学钩针入门视频教程 钩针教程
- 吉他教程入门基础知识 民谣吉他教程
