【IT专家网独家】一、引言
这个系列的文章以解释一些数据库的概念为主,比如:为什么出现redo?封锁机制的产生历程?等等。
因为接触数据库只有两三年的时间,这半年和数据库打交道的时间很少,加上笔者对数据库的理解也很肤浅,所以文章中的一些思路是一家之言,希望大家能够多多指正。当然,如果能给大家带来一点参考作用,这将会是我的荣幸。
二、数据库的学习方法
1.数据库的学习方法?
在学习数据库时,一般首先关注的是选择什么样的学习方法。其实说句很没有营养的话,没有通用的学习方法。学习方法不是一层不变的,需要根据环境以及自身的性格等外在条件进行选择。比如,在一个很优秀的团队里面,组员的能力都很强,也许更适合通过“点-线-面”的方法来提升自己的技能,遇到困难,团队中的其它成员会很主动地帮助你,这样知识面就能很快地积累,同时也能很高效、很有成就感地完成工作任务,毕竟拥有的知识只有通过工作成果才能转化为价值。
当然,在另外一种情况,这样的方法也许就不一定是最合适的了。也许团队里面就自己一个人,而自己对数据库又几乎是一窍不通,这样在工作中就会经常遇到问题,比如怎么创建表?怎么备份数据库等等?遇到一个问题,就去解决它,这样的效率可能是比较低效的。也许,只需要利用两个星期的晚上时间就可以把oracle concept文档读一遍,这样的话,遇到具体的问题,至少知道如何去解决这个问题。这样的方法,勉强称之为“整体-局部-宏观”。首先可以通过文档(甚至源代码)对数据库有个整体的了解,然后在工作过程中遇到具体问题,就去通过努力解决它,慢慢地掌握了一个个的局部,当这个量变积累到一定数量的时候,就会发现自己对整个数据库的理解达到一个更宏观的理解。
还可以是这样一个情况,已经是一个很熟练的数据库使用者,已经对某一个数据库了解得很透彻,并且在时间很充分的情况,可以学习一下其它数据库,并且对比分析它们之间异同,从而抽象出一些共性的东西。比如,各个数据库事务处理的本质是四种隔离级别,这就是数据库的共性,但是实现起来又是不同的,比如mysql在可重复读的隔离级别下,甚至实现了可串行化隔离级别才有的功能。再比如,各个数据库对sql语句解析的结果可能不一样,但是sql语句的解析从抽象的角度讲又是一样的,举个例子,两张表的连接方式无非是:嵌套连接、哈希连接、合并连接、半连接、反半连接、……,不一样的只是优化器优化的程度。
再说另外一种情况,假设你数据库理论掌握得很好,或者掌握数据库内核,已经可以从抽象的角度来考虑一些数据库问题。还是有必要来熟悉具体的数据库,理论需要和实践相结果。
……
另外,有人还会疑惑,有没有必要去学习linux,有没有必要学习php等等。其它我的看法是,如果想学就去学一下,了解下linux的初级使用,大概两个星期足够了吧?如果在这边犹豫来犹豫去,也许浪费的时间也差不多够用来学习了。学习和精通是不一样的概念。在确定学习一个事物的时候,并不一定非黑即白的逻辑,而是白占多少,黑占多少。我想起昨天一个朋友的话,在健康失去之后,才知道钱是最不重要。其实,这也是一个平衡的问题了,如果让你没有健康,只有财富,也许你会不同意;如果让你只有健康,没有财富,你也许同样会不同意;如果让你通过长时间的加班无奈地加深眼镜度数,获得几倍的财富,你也许会同意;如果……,其实这也是一个平衡的问题。
IT专家网原创文章,未经许可,严禁转载!
查看原文:http://database.ctocio.com.cn/tips/212/8214712.shtml