迄今为止,数据库的使用是非常普遍的现象,尤其是关系数据库,90%的互联网公司正在使用MySQL。即使出现了诸如Redis和MongoDB之类的新型数据库,它们也无法替代传统的关系数据库,因为此类NoSQL数据库仅解决了某种类型的问题,而不是通用数据库。关系数据库MySQL,就是世界的抽象,因此需要数据库程序员需要具备很多基本知识。那么数据库程序员掌握的基本知识有哪些?数据库程序员的日常工作是什么?
数据库程序员掌握的基本知识有哪些?
从数据库的操作角度而言,SQL语句才是基础中的基础。DBA 一方面要根据需求在数据库中实现某些功能,另一方面要指导非数据库专业人士在数据库中完成他们想要实现的功能,所以,关于数据库中很多细节性的东西都需要DBA去掌握。
另外,需要了解数据库架构方面的知识,掌握SQL底层的一些知识。例如,一般学过数据库的人都知道索引对提高查询性能十分重要,但却不知道过多的索引也会给数据的处理带来负担。如果不了解索引的内部实现机制以及SQL使用索引的原理,那么就无法合理地创建索引。
在实现了用户的需求后,接下来的工作就是维护。再好的数据库架构,也需要经常被维护和保养。例如,原来很有效的索引因为索引碎片的增多,读取的性能就会下降;因为业务的变化,有的索引被删除了,那么如何保证重要的数据不会丢失,敏感的数据不会被不该访问的人访问。这一系列的问题,除了要调查、分析,并制订出一套完整的方案外,还需要相关的知识来实施这套方案。日常维护的过程中会遇到非常多的问题,这些问题除了SQL的问题外,很多是跟系统或者网络相关的,甚至是程序中出现的问题需要调试。所以,对于一名优秀的DBA而言,操作系统、计算机网络与通信、程序设计语言等相关知识都需要有所涉猎。
为了管理好数据库,特别是管理好多台服务器,DBA有时也需要编写工具来辅助完成任务。所以,懂Shell或Python也是必不可少的。
通过上面的分析,可以得出DBA需要的技能如下:
1.数据库知识熟练掌握,包括SQL语言、备份、恢复、管理、数据库结构知识、数据库运行原理。
2.至少熟练掌握一种数据库,了解其他数据库。很少有不与其他类型数据库交互的数据库,如果只熟练掌握一种数据库,那么当需要与其他数据库交互时,就会无从下手。
3.综合能力(有一定的应用能力)。有一定的程序设计能力,包括操作系统、网络与安全等知识。
数据库程序员的日常工作是什么?
1.实时监控数据库告警日志
对于数据库程序员来说,实时地监控数据库的告警日志是必须进行的工作,监控并且应该根据不同的告警级别,发送不同级别的告警信息,这有助于及时了解数据库的变化与异常,及时响应并介入处理。
2.实时监控数据库的重要统计信息和等待事件
实时监控对于数据库的运行至关重要。要高度关注那些能够代表数据库重要变化的统计信息,并且据此发送告警信息。监控哪些统计信息应当根据不同的环境来区别对待,对于单机、RAC环境等各不 相同。
3.部署自动的AWR报告生成机制
每天要检查前一天的AWR报告(AWR报告是Oracle10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,就可以了解一个系统的整体运行情况,这就像一个人的全面的体检报告),熟悉数据库的运行状况,做到对数据库了如指掌。
4.每天至少了解或熟悉一个TopSQL
根据AWR报告,每天至少了解或熟悉一个TopSQL,能优化的要提出优化和调整建议。一个数据库程序员应当对稳定系统中的SQL非常熟悉和了解,这样才可能在系统出现性能问题时快速地作出判断和响应。
5.部署完善的监控系统,并对重要信息进行采样
数据库程序员应该对数据库部署完善的监控系统,并对重要信息进行采样,能够实时或定期生成数据库重要指标的曲线图,展现数据库的运行趋势。
6.全面深入地了解应用架构
对于一名数据库程序员而言,一定要深入了解应用。在数据库本身变得更加自动化和简化之后,未来的数据库程序员应该不断走向前端,加深对于应用的了解,从应用角度对数据库及全局进行把握和优化。
7.撰写系统架构、现状、调整备忘录
根据对数据库的研究和了解,不断记录数据库的状况,撰写数据库架构、现状及调整备忘录,不放过任何可能的优化与改进的机会。
当然,数据库程序员的工作内容远不止上面列出的这几点,像数据库安装、数据库备份、数据库恢复等都属于数据库程序员的工作内容,这里不再详述。
上述就是关于数据库程序员掌握的基本知识有哪些,以及数据库程序员的日常工作是什么的全部内容介绍,想了解更多关于数据库的信息,请继续关注中培伟业。