记录一下oracle培训的一些Tips

Oracle培训,好多都是概念的东西,有些东西还是适合开发来深入看看的,增加点谈资也是不错:
1. 一些数字: 服务费一般一年12%,比如服务器100W, 每年还要付12W服务费用来维护服务器,一般软件也有类似的收费方式。
对于DBA的要求,一个库一年的不可用时间不大于50分钟(99.99X)一般每年的"额度"可能会变化。
数据库的压力负载压力(可能是综合压力): 凌晨15%,一般时候的负载(30%-40%),如果正式上线之前的压测发现负载达到70%,就会停止上线。
OLTP: 维护22个库 8个T, 一天数据越60G, 事务包含的记录数较少,查询多,事务短,往往CPU和磁盘是瓶颈,函数往往导致CPU瓶颈,不要使用并行
OLAP: PB级别,一天可能有400G数据,常使用并行。
即使是服务器的1W5K转硬盘,一般读取速度也只有50M/s(可能是在磁盘碎块的前提下,看评测,不做raid应该能到140)。平安集团大都使用SSD
业务上使用memcached做缓存
2. Oracle不能做分库分表(没办法分片和横向扩展,提了一下可能刚支持分库,见7),我们平时说的oracle集群RAC实际上是两个instance,还是公用同一个库的
3. Oracle读会阻塞写,但是写不会阻塞读。
4. Oracle的like在某些情况可以使用索引,应该是没有前置百分号
5. 索引是DBA来创建,不是开发创建
6. ORACLE一般的性能瓶颈都在IO上
7. Oracle11G的主备功能(Active data guard)能很好的实现读写分离,而且主库备库同步的很快,五秒内
8. 淘宝基本很少使用表Join操作,弱化事务
9. Oracle如果发现变慢的时候,看内存使用率,shared pool,BufferCache
10. Oracle的最小粒度叫数据库
11. Oracle Rac会让写的性能提高,但是读的性能不会有什么提升
12. Oracle一般不会有写的话马上进行IO写,而是有多个阈值控制(内存写了3M,时间,等等)
13. PGA,SGA,Redo log buffer, undo log buffer…
14. 好多用Oracle记录日志的,建议只写关键异常,Debug或者Info级别的可以最后批量写
15. Buffered cache是个双向链表
16. 全表扫描只使用1/3的内存
17. V$sga_target_advice这个视图可以在压力测试之后查看一下,有推荐的内存设置。
18. process, transaction, session有个换算关系,概念要分开
19. 查看查询计划:set autot trace exp stat;set autot off
20. Exadata ¼柜的价格是180W
21. Oracle有闪回功能:flashbackupto(空格忘记了)
22. sqlloader类似mysql文本导入
23. 如果查询结果占表量的5%,则不会走索引,而是走全表扫描(这个值待确定)
24. 业务上要求用户必须有必填字段,这样可以有目的的添加索引
25. 11g可以把索引设置成invisible,这样就能不删索引,同时让索引不起作用。
26. 1.5T ssd 3W, 3.2T ssd 15W
27. Oracle分区:对效率提升不大,一般OLAP使用,列表分区,间隔分区。。。
28. 有些时候可以通过复杂化SQL让SQL走索引
29. 冗余字段添加,防止join
30. 查询计划的HashJoin和NestedLoop
31. MySQL的CPU会分布不均,最多使用8个core,64核的服务器一般都起5个mysql实例
32. Oracle有个隐藏的rowid,说是最高效的,但是这个值在表重排重建会变化
33. index scan(skip)复合索引跳过前面的直接使用后面的
34. sort by的字段可以和条件一起创建复合索引,但是要索引和where,sort一致,查询的结果字段也可以放到索引里面
35. 加函数会导致索引失效
36. 可以创建反向索引来跑 like ‘%a’这种sql
37. 类型转换会使索引失效
38. 表达式或函数应当放到等号的右面
39. 表里面如果有字段平时不为null,可以使用DB的defaultValue,否则应当在应用中做defaultValue,尽量让表里面不出现null
40. 复合索引应当把分类明显的放在前面,如性别,是否。就是distinct 少的字段应当放在复合索引的前面
41. 11G有个hint能走两个索引,不过生产环境没有用过
42. create index XXX online能不锁表在线创建索引
43. exists比关联join效率高
44. nested loop一定要走索引,前表一定要小
45. oracle有个分析表 analyze table t1 compute statistics,一般刚上线的时候每天跑一次,后面基本就不用跑了,这个东西是为了对表做个统计,比如前面有说5%时候走全表而不走索引,那么在查询之前怎么知道结果集有多大?就是这个东西起的作用,如果没有这个信息,oracle会默认随机取32个(数据待考证)数据块做动态采样,但是出来的结果不准。

猜你喜欢

转载自wwwcomy.iteye.com/blog/2157409
今日推荐