123
 123

2008-04-06 Sun

23:13 推荐引擎应用—-收藏夹改版商品篇 (6165 Bytes) » 淘宝数据仓库团队

        不知大家最近是否有发现,收藏夹已经偷偷的在改版了哦~~本次改版包括2部分内容:收藏步骤的改动和收藏宝贝detail中关联推荐的内容优化。

        我们就按照收藏的过程来综合看下这次改动后的结果吧。

        首先,用户在完成收藏这个动作之后,会跳出一个对话框(如下图),包括4块内容。

collect a

  1. 已有216位收藏成功啦–收藏成功的提示
  2. 淘宝猜你还喜欢–点击此链接到达该被收藏商品的关联推荐页面。(具体页面请继续向下看)
  3. 查看我的收藏夹–点击此链接到达我的收藏list。(此页面暂时未改动,敬请期待下次改版!是不是有句叫“且听下回分解”哈哈)
  4. 本类销售热门排行榜–虽然叫做了这个名字(为了吸引用户点击),其实推荐的内容是和当前收藏的商品具有相关性并且在同一类目下的商品。因为当你做收藏这个动作而非没有购买动作的时候,我们认为你对该类商品有兴趣,但可能还要多比较些同类商品,才能让你下决心去购买,所以我们在此时推荐同类商品给你,方便你更快的找到自己真正心仪的商品。点击此热门排行榜中推荐商品的链接,到达该商品的收藏关联推荐页面。

        提到了2次收藏关联推荐页面,大家一定很好奇,到底页面是怎样的呢?现在就来详细解说吧。

        收藏关联推荐页面一共分为五个部分:

        第一部分,用户关注商品的简要信息。上图先,

detail

        这是用户所点击商品的一个简要信息。用户可以通过点击图片和最上方的文字链接到该商品的detail页面,可是在detail中查看商品详情,并且进行购买的操作。

        第二部分,同类商品推荐。请看下图,

       detail a11

        用户关注某件商品,肯定是对某类商品感兴趣或者有购买意向,所以我们给出同类的8件商品,让用户可以在这8件同类商品中,方便的进行比较和挑选。以便让用户更快的找到目标商品而做出购买决策。同时,点击图片和商品标题文字均可到达商品detail页面。用户可以对感兴趣的商品进行详细的了解并购买。

        与此同时,我们还提供了非同类的一个推荐。请看第三部分:

detail a3

        用户除了可以看到同类的相关商品之外,还可以看到在别的不同类别下的相关商品。这样可以扩展用户的兴趣,让用户看到更多可能感兴趣的东西。就例如刚刚那个《无框画挂钟》,一般看这类商品的都是一些正在装饰新家的女用户,所以在我们给他的非同类的商品中还有:搁架、床单、挂帘、画等。又因为用户为女性,所以可能她会同时看一些服饰、鞋帽等,来满足自己的购物欲,所以这些就是我们给予看该《无框画挂钟》所推荐的商品。

        用户可以通过点击商品图片和商品标题,到达商品detail页面来进行购买和继续收藏。

        第四部分:相关店铺推荐,如下图,

detail a4

        如果用户的行为习惯是看某个卖家店铺的,也可以通过对店铺的推荐,让用户通过点击店标和店铺名来快速到达我们所推荐的店铺。根据用户浏览的商品,我们根据算法给出的推荐店铺有专卖无框画钟的店铺,也有其他装饰店铺,也有其他服饰类等来满足用户的各类需求。

        第五部分:该类下排行榜,如下图,

top 10 1

        用户可以通过排行榜信息很快的了解到该类目下,哪些商品最热门,价格是多少。用户可以直接点击图片和商品链接到达商品detail页面上,直接进行购买。满足某些喜欢看排行的用户的需求。

        以上就是收藏的整个过程和页面展现。大家感兴趣的可以立即去淘宝网收藏一个商品看看哦!希望大家都能在淘宝找到自己喜欢的宝贝哦~

        如果大家对收藏店铺也感兴趣的,且听下回分解了!哈哈。

19:44 ORA-01599与max_rollback_segments (19419 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

在Oracle9i之前,如果 max_rollback_segments 参数设置不当,可能会导致数据库启动时出现ORA-01559错误:
ORA-01599 failed to acquire rollback segment (string), cache space is full (currently has (string) entries)
Cause: The amount statically allocated is not enough based on the value of the MAX_ROLLBACK_SEGMENTS parameter"

这个错误是说 max_rollback_segments 参数设置过小,通过增大该参数可以解决该问题。
max_rollback_segments 参数的含义如下:
Specifies the maximum size of the rollback segment cache in the SGA.
The number specified signifies the maximum number of rollback segments
that can be kept online (that is, status of ONLINE) simultaneously by one instance.

其缺省值为:max(30, transactions/transactions_per_rollback_segment)

而从Oracle9i开始,Oracle使用AUM模式,UNDO的管理自动化,该参数的限制作用不再,以下是我的一个测试,即使设置更小的 max_rollback_segment 数据库仍然能够Online更多的回滚段:

SQL> select * from V$RESOURCE_LIMIT;

RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION  LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
processes                                      11              13        150                  150
sessions                                        14              18        170                  170
enqueue_locks                                    9              13      2230                2230
enqueue_resources                                9              9        968            UNLIMITED
ges_procs                                        0              0          0                    0
ges_ress                                        0              0          0            UNLIMITED
ges_locks                                        0              0          0            UNLIMITED
ges_cache_ress                                  0              0          0            UNLIMITED
ges_reg_msgs                                    0              0          0            UNLIMITED
ges_big_msgs                                    0              0          0            UNLIMITED
ges_rsv_msgs                                    0              0          0                    0

RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION  LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
gcs_resources                                    0              0      35215                35215
gcs_shadows                                      0              0      35215                35215
dml_locks                                        0              3        748            UNLIMITED
temporary_table_locks                            0              0  UNLIMITED            UNLIMITED
transactions                                    0              4        187            UNLIMITED
branches                                        0              0        187            UNLIMITED
cmtcallbk                                        0              0        187            UNLIMITED
sort_segment_locks                              0              1  UNLIMITED            UNLIMITED
max_rollback_segments                          11              11        38                  38
max_shared_servers                              0              0        20                  20
parallel_max_servers                            0              0          6                    6

22 rows selected.

SQL> show parameter rollback

NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
fast_start_parallel_rollback        string      LOW
max_rollback_segments                integer    37
rollback_segments                    string
transactions_per_rollback_segment    integer    5
SQL> alter system set max_rollback_segments=2 scope=spfile;

System altered.

SQL> startup force;
ORACLE instance started.

Total System Global Area  219223120 bytes
Fixed Size                  451664 bytes
Variable Size            134217728 bytes
Database Buffers          83886080 bytes
Redo Buffers                667648 bytes
Database mounted.
Database opened.
SQL> select * from V$RESOURCE_LIMIT;

RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION  LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
processes                                      11              13        150                  150
sessions                                        14              15        170                  170
enqueue_locks                                    9              14      2230                2230
enqueue_resources                                9              9        968            UNLIMITED
ges_procs                                        0              0          0                    0
ges_ress                                        0              0          0            UNLIMITED
ges_locks                                        0              0          0            UNLIMITED
ges_cache_ress                                  0              0          0            UNLIMITED
ges_reg_msgs                                    0              0          0            UNLIMITED
ges_big_msgs                                    0              0          0            UNLIMITED
ges_rsv_msgs                                    0              0          0                    0

RESOURCE_NAME                  CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION  LIMIT_VALUE
------------------------------ ------------------- --------------- -------------------- -----------
gcs_resources                                    0              0      35215                35215
gcs_shadows                                      0              0      35215                35215
dml_locks                                        0              2        748            UNLIMITED
temporary_table_locks                            0              0  UNLIMITED            UNLIMITED
transactions                                    0              4        187            UNLIMITED
branches                                        0              0        187            UNLIMITED
cmtcallbk                                        0              0        187            UNLIMITED
sort_segment_locks                              0              1  UNLIMITED            UNLIMITED
max_rollback_segments                            3              3          3                    3
max_shared_servers                              0              0        20                  20
parallel_max_servers                            0              0          6                    6

22 rows selected.

SQL> SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME                  STATUS
------------------------------ ----------------
SYSTEM                        ONLINE
_SYSSMU1$                      ONLINE
_SYSSMU2$                      ONLINE
_SYSSMU3$                      ONLINE
_SYSSMU4$                      ONLINE
_SYSSMU5$                      ONLINE
_SYSSMU6$                      ONLINE
_SYSSMU7$                      ONLINE
_SYSSMU8$                      ONLINE
_SYSSMU9$                      ONLINE
_SYSSMU10$                    ONLINE

11 rows selected.

而且在Oracle9i中 ORA-01559 错误也已经被重新定义:
[oracle@jumper oracle]$ oerr ORA 01559
01559, 00000, "MAXEXTENTS for rollback segment must be greater than 1"
// *Cause: Specified MAXEXTENTS of less than 2 for rollback segment
// *Action: Specify larger MAXEXTENTS

-The End-

相关文章|Related Articles

评论数量(0)|Add Comments

本文网址:

19:27 CronoLog的补丁 [del.icio.us] (58 Bytes) » 车东[Blog^2]
1.7 beta可以处理2G以上日志文件; 年初cronolog
19:23 Should you have your swap file enabled while running MySQL ? (5780 Bytes) » MySQL Performance Blog

So you’re running dedicated MySQL Linux box with plenty of memory, so the good question arises if you should have swap file enabled or disable it ? I’ve seen production successfully running on boxes both with and without swap file so it is not the question of you must do it this or that way but rather understanding advantages of both approaches.

I also would like to hear what you do yourself, and why :)

The rationale behind disabling swap is what there is nothing you want to swap out on such box anyway and if you disable swap file kernel will not swap and possibly will be able to manage memory smarter knowing it does not need to look for pages to swap out or balance memory for reducing a cache or swapping something out.

And indeed if you run with swap disabled you would not have the issue of swapping happening on the box as there is just nowhere to swap.

So what is about enabled swap - if we assume the kernel is smart (as we did for second case) we will be able to save a bit of memory as there are some programs which are started but never never really used. These would be first valid candidates to swap out. Second if you have swap file you get a bit more flexibility. What happens if you miscounted something or there is a gotcha in your application and you ended up with a lots of connections creating large temporary tables and so MySQL running out of memory (and getting killed by kernel). It could not even be MySQL but some script cron script or something similar with same affect.

In practice there are additional issues for both of the configurations - if you keep swap enabled you may have hard time keeping MySQL in memory because Kernel would love to swap it out. Recent kernels become much better than few years ago but I still run in workloads which expose bad kernel behavior and swap buffer space out even with /proc/sys/vm/swappiness =0. You can lock MySQL in memory by using –memlock option but it opens its own can of worms.

If you keep swap disabled you can run into another problems. A lot of code in the kernel assumes there is a swap space and I’ve seen kernel starting to behave crazy when there is memory pressure and there is nothing to swap out. This may actually mean the buffer pool (or other caches) which you can safely use can be less if you have swap file disabled. Though I must note again this can be workload and kernel version specific.

Besides general considerations there are many case specific ones. For example if you would rather spend more memory (allowing more reserve for spikes) than to have slowdown caused by swapping activities in case memory overcommit occurs you may be better off without swap file. If on the contrary you want to use as much memory as possible to get last bit of performance and do not mind slowdowns if you mixedup as well as have tools to resolve them quickly (ie killing runaway queries) keeping swap file enabled may be right for you.

Myself I tend to keep swap enabled on MySQL server but of course ensure there is not swapping happening (si/so columns in VMSTAT are zero or close to zero).

If you want to keep swap file disabled that also fine but you should make sure your workload is stable so there are no large spikes in memory requirements, as well as you have processes and discipline to make sure it is kept stable.


Entry posted by peter | 8 comments

Add to: delicious | digg | reddit | netscape | Google Bookmarks

19:23 Should you have your swap file enabled while running MySQL ? (5956 Bytes) » Fenng's shared items in Google Reader

So you’re running dedicated MySQL Linux box with plenty of memory, so the good question arises if you should have swap file enabled or disable it ? I’ve seen production successfully running on boxes both with and without swap file so it is not the question of you must do it this or that way but rather understanding advantages of both approaches.

I also would like to hear what you do yourself, and why :)

The rationale behind disabling swap is what there is nothing you want to swap out on such box anyway and if you disable swap file kernel will not swap and possibly will be able to manage memory smarter knowing it does not need to look for pages to swap out or balance memory for reducing a cache or swapping something out.

And indeed if you run with swap disabled you would not have the issue of swapping happening on the box as there is just nowhere to swap.

So what is about enabled swap - if we assume the kernel is smart (as we did for second case) we will be able to save a bit of memory as there are some programs which are started but never never really used. These would be first valid candidates to swap out. Second if you have swap file you get a bit more flexibility. What happens if you miscounted something or there is a gotcha in your application and you ended up with a lots of connections creating large temporary tables and so MySQL running out of memory (and getting killed by kernel). It could not even be MySQL but some script cron script or something similar with same affect.

In practice there are additional issues for both of the configurations - if you keep swap enabled you may have hard time keeping MySQL in memory because Kernel would love to swap it out. Recent kernels become much better than few years ago but I still run in workloads which expose bad kernel behavior and swap buffer space out even with /proc/sys/vm/swappiness =0. You can lock MySQL in memory by using –memlock option but it opens its own can of worms.

If you keep swap disabled you can run into another problems. A lot of code in the kernel assumes there is a swap space and I’ve seen kernel starting to behave crazy when there is memory pressure and there is nothing to swap out. This may actually mean the buffer pool (or other caches) which you can safely use can be less if you have swap file disabled. Though I must note again this can be workload and kernel version specific.

Besides general considerations there are many case specific ones. For example if you would rather spend more memory (allowing more reserve for spikes) than to have slowdown caused by swapping activities in case memory overcommit occurs you may be better off without swap file. If on the contrary you want to use as much memory as possible to get last bit of performance and do not mind slowdowns if you mixedup as well as have tools to resolve them quickly (ie killing runaway queries) keeping swap file enabled may be right for you.

Myself I tend to keep swap enabled on MySQL server but of course ensure there is not swapping happening (si/so columns in VMSTAT are zero or close to zero).

If you want to keep swap file disabled that also fine but you should make sure your workload is stable so there are no large spikes in memory requirements, as well as you have processes and discipline to make sure it is kept stable.


Entry posted by peter | 8 comments

Add to: delicious | digg | reddit | netscape | Google Bookmarks

18:59 的士司机的诚信 (851 Bytes) » blue_prince
半夜打车到机房换硬盘,由于下雨,加上机房所在的地方比较偏,在那边很难打到车,于是跟司机商量让他在机房楼下等我。因为我上去换个硬盘前后也就10分钟时间,再说半夜那地方也不会有什么客人,司机也答应了。为了表示诚意,我还特地先把过去的钱给结了。没想到我一进去还没登记,司机就开车走人了。NND!
16:01 Oracle11g触发器重用OBJECT_ID (625 Bytes) » yangtingkun
在11g以前,重用OBJECT_ID只是对过程、函数、包和对象而言,而对于触发器是不会重用OBJECT_ID的,从11g开始,Oracle针对触发器也可以重用OBJECT_ID了。OBJECT_ID的重用:http://yangtingkun.itpub.net/post/468/457962OBJECT_ID的重用(二):http://yangtingkun.itpub.net/post/468/458030前一段时间在介绍Oracle PL/SQL新特性的时候,提到了触发器的新功能,可以指定触发器的触发顺序。为了说明这个问题,举了一个例子: http://yangtingkun.itpub.net/post/468/398314SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30));表已创建。SQ...
08:49 偶遇孟静 (2873 Bytes) » Oracle Life

©作者:eygle 发布在 eygle.com

今天从新东方回来,在小区门口,遇到了孟静同学。

这是我搬到这里来之后,第二次遇到疑似孟静同学,临近的时候,我打声招呼:是孟静么?
她稍微有点一愣,然后说:是啊,你是?

我说:是你的fans,你上过我的网站,我也经常读你的网站,但是我们是第一次见面。
然后她开始猜测我说MSN上的某个陌生人,或者曾经某次在公交车上遇到过。

我说:都不是(可是我们有颇深的渊源)....
我说:也许以后有机会去打扰你,我们住一个小区
她说:你住几号楼?
我说:7号
他说:哦,10号
我说:不是,是7号

孟同学说,我给你一张名片吧,也许以后可以联络。
我看她游忽不定的心神,说bye-bye。

忽然想起怀里抱着刚买的玫瑰和百合,转过身来喊住她说:孟静,我送你一只玫瑰好吧?
孟MM说:不要,因为我要去看戏。

会话到此结束。回家被老婆教训一顿,以后再不敢乱送花了,汗ing。

关于孟静是谁,请参考:孟静其人孟八我和老婆是这样认识的....

相关文章|Related Articles

评论数量(4)|Add Comments

本文网址:

07:10 甲骨文发行50亿美元债券 (3261 Bytes) » 玉面飞龙的BLOG
  【SINA】总部位于加州Redwood Shores的软件业巨头甲骨文公司(ORCL)周四表示,为本金为50亿美元的债券确定了发行价格,并将把此次发行的收益用于对BEA Systems Inc.(BEAS)85亿美元的收购。   甲骨文表示,正在发行12.5亿美元2013年到期年息4.95%、25亿美元2018年到期年息5.75%,以及12.5亿美元2038年到期年息6.5%的债券。 从2005年1月收购仁科算起,甲骨文CEO拉里·埃利森已经花费超过330亿美元用于收购。据熟悉交易的人士透露,甲骨文将发行12.5亿美元5年期债券,收益率比5年期美国国债高出222个基准点。另外还将发行25亿美元10年期债券,收益率高出国债215个基准点,和12.5亿美元30年期债券,收益率高出国债212个基准点。一个基准点为0.01%。   根据甲骨文提交给SEC的文件,此次债券发行人是瑞士信贷、花旗集团和摩根·士丹利,发行债券所获收益将用于支付与收购有关的费用及企业一般用途。甲骨文新发行的债券被穆迪投资者服务公司(Moody’s Investors Service)评为A2级,相当于标准普尔评定的A级。    甲骨文表示,将把此次发行的收益用于为收购BEA融资、支付收购相关的费用,以及一般经营目的。 这说明,美国金融市场很发达,债券市场很成熟,虽然金融债券市场能够捅出次级贷款危机,但企业债券市场也确实能帮助企业融资。 同时也是Oracle公司对外发布的”信号”,在收购BEA后,公司有能力和信心,将BEA经营的更好,为公司股东创造出比原先经营者更多的价值。 中国也应该大力发展企业债券市场。企业通过债券市场融资,而不是通过各种手段和途径去获得银行贷款。市场将根据企业的效率和风险给这些企业债券以公开的评级和定价,鼓励这些企业规范运作,使得其债券可以在市场上获得更高的评级。 债券市场的繁荣可以帮助股市形成比价效应;良好的公开市场评级和定价可以帮助提升上市公司的竞争力,帮助投资人加强风险意识,最终提升高效率企业股价(投资信心)。市场资源从而得到高效配置。 银行也可以根据市场制定的企业债券价格而对企业贷款进行参照,让银行减轻风险负担。 如果有一个良好的债券市场,各种企业债券进行正常交易,银行在处理贷款申请的时候,就可以参照在债券市场上具有相同信用评级的债券当前交易价格的收益率,并以此作为对客户的贷款利率。这样做法并不会使银行承担额外的风险,因为健康的债券市场能够对同样信用等级的公司给出合理的估值。银行即便没有将这笔贷款打包出售给市场,也不必担心,因为他们承担了风险,也获得了相应的收益。而不再像现在这样,承担了企业倒闭的风险,却获得了远远低于这项风险所应得的回报。这样的话,我们的银行才真正安全。 不发展债券市场,就谈不上银行的安全和发展;不发展债券市场,金融领域的改革将事倍功半。
03:22 Fight hard, Play hard (4485 Bytes) » Chanel [K]

昨天一大早起床,去eygle的新家接了eygle和julia两口子,还有蜥蜴,再加上coolyl、江涛、刘雁、我,一共7个人,两辆车,向黑龙潭进军了。

虽然说,天气并没有那么阳光灿烂,但是对于本来一直担心可能会下雨的我们来说已经很不错了。我一直以为黑龙潭是看水,谁知道原来是爬山。。。

这是在黑龙潭最后一个潭旁边的超级大斜坡上,我跟eygle,拍照者coolyl。

我们都可以站着拍照,而julia在被eygle忽悠上来以后,唯一能做的是爬在地上,她还劝导旁边的女生说,“像我这样趴着吧”,那女生很诧异,“为什么?”,Julia说,“这样安全”,我清晰地看到那女生眼中“我FT”的眼神。Julia爬在斜坡上,说自己要像大青虫那样拱呀拱呀的拱下去,但是只拱了一下就被eygle制止了,按照那速度估计天黑了她也拱不完,我在上面看得几乎笑翻到斜坡下去。各位要问了,那Julia是怎么下去的?她是在自己的尖叫声中被eygle和coolyl合手扯下去的。原来真有这样恐高的。。。汗。

龙溪潭旁边岩石坡上的合照,蜥蜴死活不上来,所以成为拍照者了。还有一张我鞋子踹在Julia头顶上的,在Julia相机里面。

这叫露一小脸。

这叫“妈的,还我”

沿路有很多这样高过人的芦苇荡,Julia给我们几个用这个氛围整了一张黑社会造型的,还未看到,不知效果如何。

初春,虽然天气预报里面说市区温度会到28度,但是在黑龙潭还有未化的冰雪。

青山,白石,深潭,颇为赏心悦目。

被告出去玩了,玩得很爽,不知道原告是不是也能这样放心地出去玩呢?

02:52 升级到wordpress 2.5 (1585 Bytes) » NinGoo@Net

Author:NinGoo posted on NinGoo.net

升级过程很简单,覆盖上传wordpress2.5 ,然后执行/wp-admin/update.php升级数据库结构即可。我启用的插件不多,目前看来没什么不兼容的问题。

这次更新,最大的变化就是后台管理界面完全重写了,用起来还真有点不习惯,不过看起来确实比旧的要舒服一些。Tag终于加入了管理的功能,算是很早就该有的功能姗姗来迟,一大批Tag编辑相关的插件又要走向末路了。在撰写文章界面,标题的别名可以直接在标题下面的永久链接处修改了,这个位置更加容易被注意到,可以减少因为忘记而使得用了汉字的永久链接被URL编码成一堆百分号的机会。


Related Articles

Add Comments(0)

2008-04-05 Sat

23:13 Skype Plans for PostgreSQL to Scale to 1 Billion Users » Fenng's shared items in Google Reader
20:41 中国银行已成为外资超级提款机 » Fenng's shared items in Google Reader
16:01 ORA-7445(qcpircx)错误 » yangtingkun
16:01 ORA-7445(qcpircx)错误 » yangtingkun
05:04 随笔 » Think in 88
03:55 临死想到追逐日光 » Fenng's shared items in Google Reader

2008-04-04 Fri

22:10 Kickfire Kickfire Kickfire » MySQL Performance Blog
18:08 Multi-Column IN clause - Unexpected MySQL Issue » MySQL Performance Blog
15:44 为何我们要磨洋工? » Fenng's shared items in Google Reader
12:04 Friday round-up » Red Hat Magazine
10:23 Oracle11g ASMCMD新命令 » NinGoo@Net
10:00 Shell Tools: Add copy URL, copy file name and more to Windows shell » Fenng's shared items in Google Reader