楼主: kelsoncong

[精华] 数据库调优的三板斧[已结贴]

[复制链接]
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
111#
 楼主| 发表于 2012-6-27 10:25 | 只看该作者
yobyin 发表于 2012-6-27 09:12
俺还有问题, 压缩之后是查询的快了,可是这也会让insert  ,这里你的压力是在etl 这。
compress 后,时间 ...

这个地方主要存在分层聚合的问题,基本是天->周->月->季度->年,
如果我们在底层的表就设计成了压缩表,则这部分数据在被之后的层级聚合,性能就大大提升了,主要得益于IO的减少

另外你对compress表的了解不是非常的深入,压缩表是由oracle底层的代码实行实时压缩的,不存在是否支持在线压缩的问题

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
112#
 楼主| 发表于 2012-6-27 10:28 | 只看该作者
anlinew 发表于 2012-6-27 09:20
历史数据压缩就行了,新insert的数据并不压缩
关键是历史数据最好不能有更新操作

这个压缩表似乎存在些误解,这个东西是由oracle底层代码实现的实时压缩,因此只要在表里的数据都会被实时压缩的,如果是分区表,则对应分区被指定为开启压缩,也是会被实时压缩的

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
113#
发表于 2012-6-27 10:29 | 只看该作者
kelsoncong 发表于 2012-6-27 10:25
这个地方主要存在分层聚合的问题,基本是天->周->月->季度->年,
如果我们在底层的表就设计成了压缩表, ...

在这里问一下ORACLE 的技术人员:

1   basic 压缩和 oltp 压缩 在技术实现上是否一样? 我之前尝试过几遍,发现 basic 压缩率似乎比
oltp 压缩率要高,是否有必要在oltp 压缩后,当这些数据变为历史数据时,再来一遍basic 压缩?

给我感觉,oltp 压缩似乎没basic 实在。

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
114#
 楼主| 发表于 2012-6-27 10:29 | 只看该作者
yobyin 发表于 2012-6-27 09:31
我们的项目全是用的merge , 方便呀。

写SQL是方便了,性能呢
大数据量背景下,性能还是第一位的

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
115#
发表于 2012-6-27 10:33 | 只看该作者
kelsoncong 发表于 2012-6-27 10:28
这个压缩表似乎存在些误解,这个东西是由oracle底层代码实现的实时压缩,因此只要在表里的数据都会被实时 ...

11G的OLTP Compression?

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
116#
 楼主| 发表于 2012-6-27 10:38 | 只看该作者
ZALBB 发表于 2012-6-27 10:29
在这里问一下ORACLE 的技术人员:

1   basic 压缩和 oltp 压缩 在技术实现上是否一样? 我之前尝试过几 ...

这个我之前看过点介绍,是不一样的,
另外我在itpub上看到一篇博文写的很不错,
http://blog.itpub.net/category/42818/66940
他的结论是在一般的oltp的环境下,oltp的压缩率高,但是直接装载的时候,basic压缩率高,具体结论在下面,详细的内容可以参加原文

由以上数据可以看出来常规insert的插入到压缩表,压缩比是
no compress(29) < compress basic(26) < compress for oltp(13)
append方式插入到压缩表,压缩比是
no compress (29) < compress for oltp(13)  < compress basic(11)

使用道具 举报

回复
论坛徽章:
67
现任管理团队成员
日期:2012-06-02 02:10:00ITPUB元老
日期:2012-09-12 14:06:14ITPUB社区千里马徽章
日期:2013-06-09 10:15:34季节之章:冬
日期:2012-09-04 11:05:30季节之章:春
日期:2012-09-05 09:20:36优秀写手
日期:2013-12-18 09:29:09马上有房
日期:2014-04-10 13:35:362014年新春福章
日期:2014-04-14 09:54:08马上有车
日期:2014-02-28 16:43:13马上加薪
日期:2014-02-19 11:55:14
117#
 楼主| 发表于 2012-6-27 10:39 | 只看该作者
anlinew 发表于 2012-6-27 10:33
11G的OLTP Compression?

yes

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
118#
发表于 2012-6-27 10:47 | 只看该作者
ZALBB 发表于 2012-6-27 10:29
在这里问一下ORACLE 的技术人员:

1   basic 压缩和 oltp 压缩 在技术实现上是否一样? 我之前尝试过几 ...

默认情况下basic压缩的表PCTFREE 为0
oltp的为10,光这一项差别就不小了

使用道具 举报

回复
论坛徽章:
314
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
119#
发表于 2012-6-27 10:49 | 只看该作者
anlinew 发表于 2012-6-27 10:47
默认情况下basic压缩的表PCTFREE 为0
oltp的为10,光这一项差别就不小了

不知道还有这项差别,

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
120#
发表于 2012-6-27 10:51 | 只看该作者
kelsoncong 发表于 2012-6-27 10:38
这个我之前看过点介绍,是不一样的,
另外我在itpub上看到一篇博文写的很不错,
http://blog.itpub.net ...

博文里的错误估计也是没考虑pctfree:
  1. SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_CTAS_NOCOM';


  2. SUM(T.BYTES)/1024/1024

  3. ----------------------

  4. 29



  5. Packing Compressed Tables

  6. If you use conventional DML on a table compressed with basic compression, then all inserted and updated rows are stored uncompressed. To "pack" the compressed table such that these rows are compressed, you can use an ALTER TABLE MOVE statement.

  7. [color=Red]对于本身是压缩表但是插入数据是按照常规插入的情况下,官方虽然说没有压缩但事实之前的实验表明数据占据的空间还是比存在于非压缩表中占用空间要少[/color],为了让这些数据进一步压缩,可以使用alter table move这种语句来实现,来看一下实验;



  8. SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_INSERT';


  9. SUM(T.BYTES)/1024/1024

  10. ----------------------

  11. 26


  12. SQL> ALTER TABLE TEST_DBA_OBJECTS_INSERT MOVE ;


  13. Table altered


  14. SQL> SELECT SUM(T.BYTES)/1024/1024 FROM USER_SEGMENTS T WHERE T.SEGMENT_NAME = 'TEST_DBA_OBJECTS_INSERT';


  15. SUM(T.BYTES)/1024/1024

  16. ----------------------

  17. 11
复制代码

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表