|
本帖最后由 buptdream 于 2013-2-20 17:00 编辑
1,优秀的DBA具备哪些专业素质?
硬件和网络方面的素质:
1:要对硬件,主机比较了解,因为数据库直接运行在主机上,如果一个DBA对主机不熟悉,你怎么能说从何管理数据库,所以我们对主机这块必须非常了解。
2:除了对主机我们对磁盘阵列也必须了解,因为当前虽然技术发展,很多银行、证券公司,一些大的网站,他们都是提供7×24小时,7天24小时不间断运转,所以他们的设备,要提供一种高可用性,需要一些大型设备,磁盘阵列也要大型的。
3:DBA对网络也应该有一定了解,现在全球经济是你中有我,我中有你,为什么在这个金融危机发展的前期,各个国家都是各自为政来处理金融危机,但是各个国家包括美国,加拿大,其他国家采取一些措施对金融危机没有产生多大的效果。这次金融危机和美国以前发生的金融危机不一样,以前美国金融危机仅仅是美国一个国家的金融危机,而现在金融危机是全球性,一个公司在全球有很多分公司,它的网络在逻辑上是联在一起,作为一个DBA要管理可能不仅仅是你本地数据库,或者是你中国的数据库,可能你管理是全世界,这些数据库物理可能是分布在韩国日本,所以你对网络也有一定的了解,作为一个DBA硬件层次必须了解这几个方面。
软件方面的素质:
1:就是操作系统,我们数据库大部分运行在Linux等平台上,如果DBA对他们的系统不了解,那么我们无从管理他们的数据库,因为数据库是运行在操作系统之上,操作系统就是轴,轴功能不好,其他怎么能好的。软件包括操作系统,
2:就是应用程序,我们一个数据库运行最终目的,是为了给外面人或者客户提供服务,就存在就是说我们要给其他应用程序提供一个交互,如果就是说你对应用程序如何访问数据库我们连这个原理都不了解,那么我们对数据库进行管理呢? 我们了解运用程序如何访问数据库,为什么这点非常重要,因为我们了解这个机制,我们才能知道如何提高我们数据库性能,如何提高我们数据库的最大化,因为其实数据库经常会发生性能下降的问题,根据我这几年的经验分析,数据库性能降低60%,是和我们硬件有关,我们硬件已经达到极限,包括内存,CPU计算能力,网络传输能力已经达到极限,这些是40%。60%是我们数据库设置不当导致效率低下,我们进行数据库性能调整,第一点首先要着眼于60%的软件问题,40%是发展我们的硬件。
职业素质要求:
1:必须冷静,为什么呢,数据库经常发生一些问题,当你用数据库最新版本,把最新应用用到实际工作当中去会遇到很多问题,而且这些问题你在以前没有看到过,谷歌或者百度也找不到答案,遇到这种情况必须保持冷静。
2:就是必须谨慎,当你在一个公司管理一个很重要数据库,出现问题的时候,首先你的客户,同事正在等待你解决问题,老板正在催促你,CTO在督促你,这个时候必须保持冷静,因为保持冷静才能静下心来,想方设法解决问题,找到这个问题答案。如果这个时候不冷静,找不到答案,还会给公司带来损失,或导致一些其他的故障。所以作为DBA冷静、谨慎这两点是非常重要的。
3:DBA必须有沟通的技巧,这也是非技术问题。大家知道作为一个DBA他要服务的对象很多,大家有时候觉得他是一个很神圣的角色,其实不是这样,DBA其实是一个很下面的角色,为什么呢?因为这个角色为很多人提供服务,你要为客户提供服务,要为其他客户提供支持,你要给开发人员提供技术培训,你要给你的CTO提供整个公司数据库的硬件和软件规划,还有要给你CTO提供性能方面咨询。所以作为一个DBA你要为很多人服务,还有特别是对市场人员,在竞标一个项目的时候,DBA需要为市场人员提供一些数据方面技术支持,所以DBA也需要和市场人员沟通,所以一个DBA做得好做不好,技术是一个层次,沟通也非常重要,跟客户沟通不好,得罪公司客户;和开发人员沟通不好,开发人员可能写不出来高效的程序,不和开发人员进行合作可能导致公司整个项目往后推了;不和市场人员沟通
好,市场人员得出数据不利于这个公司发展;不和自己CTO沟通好,不知道你的CTO到底让你做什么,完成什么任务。所以DBA的沟通能力是非常重要的。
4:作为一个DBA必须有挑战精神,为什么必须有挑战精神,因为数据库在不断发展,公司在不断壮大。当公司业务壮大,数据量不断壮大,我们需要一些高端设备,包括硬件软件,我们需要应用新的技术解决我们面临的问题,如果一个DBA没有挑战精神,几年以后你发觉你已经被整个IT业远远落在后面了,所以说一个DBA必须有挑战性,想方设法运用最新技术解决公司问题,新的技术能够让我们业务提高好几倍,所以说DBA另外一个精神就是必须有挑战精神。
从习惯和方法来来说需要具备以下素质:
1:当遇到一个问题后,一定是深入下去,穷究根本,这样你会发现,一个简单的问题也必定会带起一大片的知识点,如果你能对很多问题进行深入思考和研究,那么在深处,你会发现,这些面逐渐接合,慢慢的延伸到mysql的所有层面,逐渐的你就能融会贯通。这时候,你会主动的去尝试全面学习mysql,扫除你的知识盲点,学习已经成为一种需要。
2:你需要做的就是能够根据自己的知识以及经验在各种复杂情况下做出快速正确的判断。当问题出现时,你需要知道使用怎样的手段发现问题的根本;找到问题之后,你需要运用你的知识找到解决问题的方法。这当然并不容易,举重若轻还是举轻若重,取决于你具备怎样的基础以及经验积累。
3:学习和研究mysql,严谨和认真必不可少。
4:天道酬勤
5:一个好的DBA,除了具备一些开发相关的素质外,还必须了解系统方面的知识,深入地了解操作系统才能更好的理解数据库,这两者是相辅相成的,OS和DB的结合紧密度最高,所以作为一个DBA应该深入地学习一下OS知识。
2,你觉得最有效SQL优化的方法是什么?
在mysql中 语句的优化思路和原则主要提现在以下几个方面:
1. 优化更需要优化的Query;
2. 定位优化对象的性能瓶颈;
3. 明确的优化目标;
4. 从Explain 入手;
5. 多使用profile
6. 永远用小结果集驱动大的结果集;
7. 尽可能在索引中完成排序;
8. 只取出自己需要的Columns;
9. 仅仅使用最有效的过滤条件;
10. 尽可能避免复杂的Join 和子查询;
要说到最有的sql优化方法,我觉得:
1:从Explain 开始入手。为什么?因为只有Explain 才能告诉你,这个Query 在数据库中是以一个什么样的执行计划来实现的。但是,有一点我们必须清楚,Explain 只是用来获取一个Query 在当前状态的数据库中的执行计划,在优化动手之前,我们比需要根据优化目标在自己头脑中有一个清晰的目标执行计划。只有这样,优化的目标才有意义。一个优秀的SQL 调优人员(或者成为SQL Performance Tuner),在优化任何一个SQL 语句之前,都应该在自己头脑中已经先有一个预定的执行计划,然后通过不断的调整尝试,再借助Explain 来验证调整的结果是否满足自己预定的执行计划。对于不符合预期的执行计划需要不断分析Query 的写法和数据库对象的信息,继续调整尝试,直至得到预期的结果。当然,人无完人,并不一定每次自己预设的执行计划都肯定是最优的,在不断调整测试的过程中,:如果发现MySQL Optimizer 所选择的执行计划的实际执行效果确实比自己预设的要好,我们当然还是应该选择使用MySQL optimizer 所生成的执行计划。
2:索引,可以说是数据库相关优化尤其是在Query 优化中最常用的优化手段之一了。但是很多人在大部分时候都只是大概了解索引的用途,知道索引能够让Query 执行的更快,而并不知道为什么会更快。尤其是索引的实现原理,存储方式,以及不同索引之间的区别等就更不是太清楚了。正因为索引对我们的Query 性能影响很大,所以我们更应该深入理解MySQL 中索引的基本实现,以及不同索引之间的区别,才能分析出如何设计出最优的索引来最大幅度的提升Query 的执行效率。
3,说说读完试读章节后你的感想
该书虽然非常轻薄,却非常实用。该书首先介绍了最为常用的性能调优技巧;然后逐步介绍MySQL的查询执行计划和索引机制,介绍如何在数据库应用程序的开发和生产环境中分析、定位并且解决性能问题;然后还介绍了如何从管理配置和参数调整的角度优化应用程序。诚然,SQL 语句性能优化、数据库管理配置调整都是需要长期经验积累,不是仅仅学习一些技巧就可以做到的。
试读章节中总共有三章内容,一个是第四章:创建MySQL 索引,一个是第五章创建更好的MySQL 索引一个是第九章 MySQL EXPLAIN 命令详解。
前两章内容中介绍了索引的一些知识,索引可以说是数据库相关优化尤其是在Query 优化中最常用的优化手段之一,书中提到了索引比较实用的一些方面,但没有对其比较复杂的原理进行详细介绍,更偏重于实用角度。能够在很短的时间里掌握索引的一些用法。尽管创建索引的原则很简单,但是要选择在合适的列上创建索引,并且要判断在当前情况下添加索引带来的读数据性能的改进是否超过了对写数据性能的影响则不是那么容易。不管你的SQL 语句有多么复杂,你都可以将一个SQL 语句简化成为包含用到的表的子集的更小的工作单元,然后分别分析这些小型组件,最后再一点一点重新构造成为你的SQL 语句。如果创建更好的索引也是我们平时经常遇到的问题,好的索引是需要经过对系统认真分析之后得出的一种优化手段。通过使用索引,查询的执行时间可以从秒的数量级减少到毫
秒数量级,这样的性能改进能够为你的应用程序的性能带来飞跃。合理的调整你的索引对优化来说是非常重要的,尤其是对于高吞吐量的应用程序。即使对执行时间的改进仅仅是数毫秒,但对于一个每秒执行1000 次的查询来说这也是非常有意义的性能提升。
第九章对MySQL EXPLAIN 命令做了一些详细的解释,这部分内容在优化sql中是一个非常好的工具,通过这个命令,可以定位sql的一些瓶颈。MySQL Query Optimizer 通过我让们执行EXPLAIN 命令来告诉我们他将使用一个什么样的执行计划来优化我们的Query。所以,可以说Explain是在优化Query 时最直接有效的验证我们想法的工具。一个好的SQL Performance Tuner 在动手优化一个Query 之前,头脑中就应该已经有一个好的执行计划,后面的优化工作只是为实现该执行计划而作出各种调整。
总体感觉这是一本比较实用的书,非常不错。
|
|