oracle基础知识入门 oracle数据库( 二 )


禁忌七:注意组合指标的使用 。
使用多个字段的混合索引是很常见的,但是索引中使用的字段越多,开发时需要关注的字段就越多 。在开发过程中,有些人容易忘记索引字段,导致编写不需要索引的语句变得很容易 。因此,一般建议复合索引使用不超过5个字段;
索引中字段的顺序非常重要,字段越唯一,它就越高 。
当代码使用复合索引时,如果使用索引字段作为条件,则必须使用索引中的第一个字段作为条件,以保证系统使用该索引,并且字段顺序应尽可能与索引顺序一致 。
禁忌八:慎重考虑表字段调整 。
当一个最初设计的表运行一段时间后,随着业务的发展和系统的持续运行,调整表结构是迟早的事 。但在调整表结构时需要谨慎,如添加新字段、调整字段长度等,尤其是数据量大、访问频繁的表 。
在评估表结构调整时,通常需要考虑:
需要停止系统调整吗?对于高并发访问、频繁访问的表,至少要等到业务空闲时再调整;
如果是调整字段大小,需要评估是否有限制字段大小的代码;
如果是新字段,需要评估是否有代码被select *访问;
需要初始化历史数据吗?如果是,会不会造成线路迁移?需要重建表吗?
会影响外设接口或者系统数据的交互吗?
为了应对字段增加可能带来的风险,有2种方法提取预防:
为一些大表预留一定的字段,可以避免停止系统,减少行数据迁移,避免系统运行时表结构调整的风险 。但需要规划好预留字段的数量,做好启用管理 。
尽量不要移动大桌子本身,而是设计一个扩展的桌子来解决 。
9.禁忌:不要直接使用用户名和密码连接数据 。
在信息安全受到高度重视的今天,数据库的安全是重中之重 。应用系统不应直接使用程序代码或配置文件中的用户名和密码来连接和访问业务数据 。这样,开发人员和维护人员的密码和没有密码是一样的 。此外,如果数据库必须更改密码,则需要到处更改与密码相关的代码或配置文件 。
更好的解决方案是使用最低特权用户登录 。登录后可以通过专用的加密配置表获取用户实际使用的用户和密码,这是第二次登录 。
禁忌10:慎用数据库连接 。
在大型系统中,数据库连接是一种宝贵的资源 。Oracle的连接列表实例一般限制在4,096个,这似乎很多 。但是如果连接节点很多,你会发现连接的数量往往不够 。因此,有必要控制数据库访问的连接收敛,以实现连接的重用 。
要实现连接的收敛,有以下做法:
WEB服务器通过连接池管理汇聚客户端的数据访问;
后台或中间流程通过数据访问代理层进行复用和融合;
后台维护限制了单次登录会话的数量 。
禁忌11:避免排比 。
在程序代码或表格的参数设置中,可以设置并行参数 。并行性可以快速提高单个表或单个语句的执行效率,但这种并行性是以抢占其他任务的资源为代价的 。因此,在OLTP数据库应用中,最好不要使用并行DML语句或打开表的并行参数 。当一个任务的执行速度需要临时使用时,需要和DBA协商是否可以开启并行,任务完成后关闭表的并行参数 。
几年前一个项目割接时,为了加快割接速度,当晚参与割接的一个工程师在没有和任何人商量的情况下,对一个重要的、经常访问的大表的并行参数设置进行了多次调整,割接后没有关闭,导致第二天业务开始后数据库被锁,主机CPU满负荷,影响业务4个多小时 。经过长时间定位,发现桌子被平行打开,问题最终解决但造成不良影响 。造成问题的工程师也在华为年终考核中被处分,离职 。
禁忌12:不要在SQL语句中使用绑定变量 。
在应用开发中,大多数SQL语句都是动态SQL,分为两种:一种是字段的值发生变化,另一种是连数据对象的名字都是动态的 。
对于改变字段值的情况,基本access SQL是固定的,对于改变的字段值,需要通过绑定变量来传递值,这样数据库就不会重新编译SQL语句,可以提高执行效率 。如果不使用绑定变量,SQL语句直接用字符串拼接,实际上和数据对象是一样的,这样SQL语句每次都会被编译,效率会大打折扣 。
由于数据对象名是动态SQL,所以不适合通过绑定变量来传递数据对象名 。
禁忌13:避免过多的索引 。
表的索引需要单独占用存储空 。过多的索引会在表数据发生变化时花费过多的时间来调整索引,从而导致数据添加、删除和修改的性能下降 。对于频繁插入、删除和更新的数据表,应该控制索引的数量以提高效率 。一般情况下,一个表中的索引数应控制在5以内 。如果一个表需要建立5个以上的索引,一般说明表和应用的设计有问题 。


推荐阅读