Author Archives: (adam)
oracle替代触发器的一种用法
原文地址: 快速增加表的默认值的方法 原文描述了一种尽量短时间锁定表的情况下给大表增加带默认值的字段的方法,主要思路如下: 先增加需要的字段,但不带默认值 修改新增字段的默认值 创建视图,将表中新增加字段的值,使用nvl函数转化为默认值 利用替代触发器,解决视图更新的问题 SQL语言: 高亮代码由发芽网提供 – 1. 创建测试的表 system@ORCL>create table t_person(id number); Table created. system@ORCL>insert into t_person values (1); 1 row created. system@ORCL>insert into t_person values (2); 1 row created. system@ORCL>commit; Commit complete. – 2. 增加新字段,更改默认值 system@ORCL>alter table t_person add (name varchar(20)); Table altered. system@ORCL>alter table t_person modify (name default ‘unknown’); [...]
后端优化 — Numbers You Should Know
原文地址:我对后端优化的一点想法by童家旺(2012DTCC) L1 cache reference 0.5 ns(1GHz CPU) Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 25 ns Main memeory reference 100 ns Compress 1k bytes with Zippy 3,000 ns Send 2k bytes over 1Gbps network 20,000 ns Read 1MB sequentialy from main memory 250,000 ns Round trip with same datacenter 500,000 ns [...]
有感于程序员杂志对何刚的专访文章
下面的主要内容来自于2012年03期程序员对盛大副总裁何刚的专访文章 何刚解释从微软的SQL Server到adCenter的原因 SQL Server这样的系统软件,深度永无止境。但我当时觉得自己在系统软件方面已经积累到一定程度,希望在广度上有所扩展。看到技术杂志封面上都是有关互联网的内容,谷歌的搜索和在线广告热度很高,我也知道微软在这方面很重视,于是想去尝试。 现在回头看,我很庆幸迈出了这一步,让人豁然开朗。发现数据库虽然很重要,但在人们时间生活中只占很小一面。如果真干一辈子,可能会错过很多路上的风景,这也是我后来从微软跳到亚马逊,以及从亚马逊又回到盛大的原因。 感悟: 专业深度加上业务广度,对大多数人来说,是前景更宽阔的选择。 何刚解释从微软到亚马逊的考虑 我是做系统软件出身,又受到微软工程师文化的熏陶,所以并不想做关于卖书、卖衣服的系统。对于这些业务,技术只是一个辅助的角色。于是想到尝试亚马逊的云计算,它做的是技术,卖的也是技术。当时业界对亚马逊的云计算很推崇,而且正好S3的后台开发经理缺人。 感悟: 对于个人职业的选择,很重要的一点是要考虑你所做的工作是不是企业的核心业务。 微软和亚马逊技术人员风格的比较 微软的文化永远是花时间把计划写好,然后再去做。 …我觉得亚马逊的技术人员是一帮黑客,一旦有事情发生,立刻会有人提议尽快采取某种方式讲起堵住。… 我多次问起他们有没有想到中长期怎么解决,他们很诧异,奇怪我怎么会有这种问题。 … 如果系统出现问题,摆在每个人面前第一位的永远都是如何用最快的速度解决用户的问题,而不用管方法是否漂亮,架构是否完美。 亚马逊开发S3花了多长时间? S3是6个人花了半年时间开发出来的,而以微软的做事方式,这样的项目至少需要投入五六十人,需要两年才能做出来。 感悟: 这也许是微软在互联网业务方面的真实写照,耗资巨大却进展缓慢,可能是微软开发的文化不适应互联网追求快速、实用的氛围。 云计算是新技术吗? 其实云计算没有太多新技术,即使相对较新的虚拟化,也有多年历史。它的“新”,主要体现在商业模式上。 绝大多数需要云计算需要解决的问题都很平常,有许多事系统集成领域在过去20年已经使用方法。唯一的区别在于规模。当服务器变成十万甚至百万时,很多问题会重新出现,只是表现形式不同,又难以预料。 美国经济危机对云计算的推动作用 2008年美国经济危机以前,亚马逊并没有那么响亮。经济危机来临,VC的资金少了很多,创业公司想生存却不能花费百万美金购买服务器,因此转而租用亚马逊的服务器。这也是为什么经济危机来了,对人们不是件好事儿,对云计算却是件好事儿。 后记:刚写完这篇文章,想查一下何刚的资料,搜索出来的最新消息是:盛大云CEO何刚离职 一年内离职两位核心高管,看来互联网这个行业的变化还真快。
makdown书写测试
什么是Markdown? Markdown is a lightweight markup language, originally created by John Gruber and Aaron Swartz allowing people “to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML)”. The language takes many cues from existing conventions for marking up plain text in email. Markdown的特点: 简单,纯文本保存,可以使用任何你喜欢的编辑器 直观,所采用的标记符合文本文件记录信息的习惯 便于转换:Markdown设计成很方便的转换成html文件,除了原作者提供的markdown.pl之外,有很多其他实现 在Wordpress中使用Markdown [...]
从DBA到DA看IT技术和数据的价值
原文:ITPUB名人堂第16期支付宝数据平台负责人、知名DBA专家冯春培先生分享自己的职业之路 下面是精彩内容的节选: 1. DBA角色的变迁 作为DBA带给企业的是业务的快速响应和稳定,同时为了身后的同事们的发展以及和企业需求之间想结合,我们开创了几种岗位角色和发展路径,一开始是开发 DBA和产品DBA 然后开发DBA逐步不满足于遵循基本规范和解决SQL性能问题,要求线上处理,希望自己是整条业务线的数据的Owner,于是扩展工 作范畴之后更名应用DBA。 而产品DBA当失去Schema和数据的处理工作之后觉得挺失落,除了加加数据文件和巡检之外,似乎没多少事情可做了,于是努 力的拓展数据库和硬件之间的定制、优化,结合应用特点做定制化解决方案,于是就有了数据库架构师的角色。 当硬件和系统本身无论如何提升,应用无论如何设计和优化都满足不了业务的高增长的时候,水平拆分、垂直拆分应声而出,系统多了之后交互量很庞大,预测业务增长做好规划,于是催生了数据架构师的角色。 但在思考自己提供的价值之后,我认为自己应该更好地拓展,所以后来到支付宝负责数据平台,技术上解决大数据的计算、存储,应用上需要拓展各种有价值的数据 产品,从支撑业务发展到驱动业务发展,进入到企业核心价值链上,这是我到支付宝后给自己新的目标。 目前真正让数据创造价值的企业并不多,我们也是践行者, 希望在这条路上也同样带给后来者一个清晰的路径。 2. 如何看数据库的技术 所以我更主张大家透过现象去看技术的实质,研究各种技术的特点背后的优劣到底是怎么回事,这样才有自己的看法。Oracle、mysql、nosql都是 一些具体的数据管理的表现形式,他们主要面对什么客户、解决什么问题、带来什么价值,看透了这些,我们就不会被表象所牵引。 3. DBA的前景 我们不会有人希望凭借一招技术本领吃一辈子吧?关键是得不断地思考自己给企业创造什么价值,自己需要寻找什么样的环境来帮助自己提升。 像我自己2004年 到阿里巴巴,找到一个快速发展并且很重视数据的公司,那不是来自我的英明而的确是运气。现在互联网这么发达,交流机会这么多,年轻人需要更多的努力和思 考,在市场中去寻找自己的位置。 你无法指望仅仅是好运,即使我当初运气好,但持续走到现在也是我个人努力的结果,相信即使不在阿里巴巴,我也会发展的很 好。所以我认为,大家如果从思考DBA过渡到思考DA(data administrator),你的前途会更光明。
oracle全文索引测试
指定词法分析器lexer –chinese_lexer对中文的分词效率较高,但数据库的编码必须是UTF8 SYS@orcl>exec ctx_ddl.create_preference(‘my_lexer’, ‘chinese_lexer’); 创建单个字段的全文索引 SYS@orcl>desc t; Name Null? Type ——————– NAME VARCHAR2(50) ROLE VARCHAR2(50) SYS@orcl>create index index_t on t(role) indextype is ctxsys.context 2 parameters(‘lexer my_lexer’); Index created. 使用全文索引进行查询 SYS@orcl>select * from t where contains(role, ‘开发’) > 0; –使用score函数查询关键词的匹配度 SYS@orcl>select score(1), name, role from t where contains(role, ‘开发’, 1) > 0; 同步和优化索引 –默认情况下,全文索引不会同步更新,需要提交job定期更新 SYS@orcl>exec [...]
正则表达式中的不包含
需求:找出包含@,但@后面不是sina的行 支持零宽匹配的写法:@(?!sina),在Regular Expressions Tester中的结果如下 可惜的是shell下的grep不支持零宽匹配,可以用下面这个变通的方法: adam@adam-desktop:~$ echo “mail from abc@sinb.com” | egrep ‘.*@([^s]|s([^i]|i([^n]|n[^a])))’ mail from abc@sinb.com 后来发现在grep中使用-P后可以支持零宽匹配 adam@adam-desktop:~$ echo “mail from abc@sinb.com” | grep -P ‘.*@(?!sina)’ mail from abc@sinb.com 参考文章: 正则表达式–零宽断言详解 使用grep和正则来分析Web服务器日志(零宽断言-正则环视)
使用oerr命令查看oracle错误信息
Unix和Linux环境下可以直接使用,windows环境使用需要使用第三方的工具。 $ ./oerr ora 1555 01555, 00000, “snapshot too old: rollback segment number %s with name \”%s\” too small” // *Cause: rollback records needed by a reader for consistent read are // overwritten by other writers // *Action: If in Automatic Undo Management mode, increase undo_retention // setting. Otherwise, use larger rollback segments 参考资料: Viewing [...]
oracle中null在in、not in、exists操作中表现
1、null在in、not in操作符的左边时,结果都不是true SQL>select 1 from dual where null in (1,2,3,null); no rows selected SQL>select 1 from dual where null not in (1,2,3,null); no rows selected 2、使用not in时,如果操作符右边的集合中有null,其返回结果结果始终不是true SQL>select 1 from dual where 5 not in (1,2,3); 1 ———- 1 SQL>select 1 from dual where 5 not in (1,2,3,null); no rows selected 3、对包含null字段,not in和not exists操作不再等价,not exists返回结果更多,因为包含了null值 [...]
物化视图快速刷新测试
1. 创建物化视图相关的授权 GRANT CREATE MATERIALIZED VIEW TO adam; GRANT QUERY REWRITE TO adam; 2. 使用dmbs_mview.explain_mview查询无法快速刷新的原因 需要先创建表 mv_capabilities_table 脚本:$ORACLE_HOME/rdbms/admin/ultxmv.sql 具体用法: exec dbms_mview.explain_mview(mv=>’ekp.mv_org_person’,stmt_id=>’100′); select * from mv_capabilities_table t where t.capability_name like ‘REFRESH_FAST_AFTER%’ and statement_id = ’100′ dmbs_mview.explain_mview查询出无法快速刷新的原因: mv references PL/SQL function that maintains state, msnno 2083 查询语句中使用了函数wmsys.wm_concat inline view or subquery in FROM list not supported for [...]
Feed订阅