战争的开始:系统从开发环境到生产环节
战术与战略:战略是大局上把握整体sql架构,战术是局部的sql。
战略第一部分:
高效访问数据库的程序的关键目标
1,查询的识别
在程序中加入sql语言的识别,
/*查询今天出差的合同工的人员*/ select **********
orcale包含的registration faclities实现啦对注释的简化
2,数据库链接的稳定性
数据库链接会带来巨大的开销,
一个1000行的sql语言,发生以下3种操作
a. 链接一次,一个行操作
b. 链接一次,所有行操作
c.链接一次,100行为一个数组进行操作
操作时间a>>b>>c
原因:数据库的链接是重复操作,线程,sesssion,跟踪,dbms的检验等。
程序与数据库之间的交互
3,战略优先与战术
战略决定展示,高屋建瓴。
4,先定义问题,再解决问题
所有的技术。方案都是我们为了达到目标的手段,,新技术固然很迷人,
但是不要把新的技术作为目标,摆弄新工具之前,先学好手艺。
5,保持数据库模式的稳定
不要在程序中使用ddl语言,建立,修改,删除数据库对象。
ddl核心是数据字典,数据字典是所有数据库操作的核心,所以对ddl的操作会引起全局加锁
6,临时表与永久表,
一般使用永久表,临时表的使用减低优化性能。
7,使用sql处理集合
sql语言是基于集合(set)处理数据的,如果不是从整个表进行操作,必须对处理的set
进行粒度的定义,或许是大量数据粗粒度,或许是小量数据细粒度
将大批的数据处理分割为许多的小的数据处理是个坏注意。
如:几千个数据,使用游标很慢,换成几个语句,虽然快不了多少,但总是推荐这样做
8,动作丰富的sql语言
sql不是过程语言,请区别声明处理与过程处理的区别,所以不要给sql加入过程
逻辑,如if else等,
原因:数据库的访问会跨越多个软件层,甚至是网络层。
sql中引入过程逻辑,性能与维护问题将由你的程序承担。
9,每次充分访问数据库
要从一个数据表中提取多段数据的时候,一次全部读取,而不是分次读取
10,接近dbms的核心
代码越是靠近dbms核心,越是执行的快,
有些数据库允许自己写c语言等为其编程,这样肯定快
多多使用数据库自带的函数
11,只做必须做的东西
不要重复的造轮子,请使用现有的sql功能和api。
12,sql语言反映了业务逻辑
使用数据库的监控功能,确保当前执行的业务活动合理并且一致。
13,把逻辑放在查询中
只要可能就把条件逻辑放在sql语句中,而不是sql的宿主语言。
14,一次完成多个更新
如果可以的话,尽量使用一个语句处理多个更新,尽量减少同一个表的重复访问,
15,慎重使用自定义函数
优化器对于自定义的函数无能为力
16,简洁的sql语言。
sql是声明式语言,所以尽量使用你的额代码超越业务
17,进攻式编程与异常。
异常与攻击性编程是个难题。
chapter 2 发动战争
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...