MOOC体系-DBA数据库工程师(慕K学习分享)

2024-05-19 10:05:14 浏览数 (3)

BA(数据库管理员)是负责管理和维护数据库系统的专业人员。他们负责确保数据库的安全性、可用性和性能,以及处理数据库相关的任务和问题。

DBA技术包括:

  1. 数据库设计和建模:DBA参与数据库的设计和建模过程,确保数据库结构满足业务需求,并具备良好的性能和扩展性。
  2. 数据库安装和配置:DBA负责安装和配置数据库软件,包括设置适当的参数和选项,以实现最佳性能和安全性。
  3. 数据库备份和恢复:DBA制定和执行数据库备份和恢复策略,确保数据的完整性和可恢复性,以应对意外故障或灾难。
  4. 数据库性能优化:DBA监测数据库的性能指标,识别并解决性能瓶颈,优化查询和操作,提高数据库的响应时间和吞吐量。
  5. 安全管理:DBA负责数据库的安全管理,包括用户权限管理、访问控制、数据加密等,以保护敏感数据免受未授权访问和恶意攻击。
  6. 故障排除和问题解决:DBA负责诊断和解决与数据库相关的故障和问题,如数据损坏、死锁、性能下降等,确保数据库的稳定运行。

快速入门DBA需要掌握以下关键概念和技能:

  1. 数据库管理系统(DBMS):了解常见的DBMS,如Oracle、MySQL、SQL Server等,理解其架构、功能和特点。
  2. SQL语言:熟悉SQL语言,包括数据查询、更新、删除等操作,以及DDL(数据定义语言)和DML(数据操作语言)语句的使用。
  3. 数据库备份和恢复:学习数据库备份和恢复的方法和工具,掌握基本的备份和还原操作。
  4. 性能优化:了解数据库性能优化的基本原则和方法,学习如何分析和解决常见的性能问题。
  5. 安全管理:了解数据库安全的基本概念和技术,学习如何管理用户权限、实施访问控制和数据加密等安全措施。
  6. 监控和故障排除:学习使用监控工具来监测数据库的状态和性能,并学会处理常见的故障和问题。
  7. 学习资源:阅读相关的DBA书籍和学习资料,参加培训课程或在线教育平台提供的DBA课程,积累实践经验并与其他DBA进行交流和学习。

DBA数据库工程师 性能优化技巧

  1. 监控和调优数据库的性能指标:监测数据库的关键性能指标,如CPU利用率、内存利用率、磁盘IO、查询响应时间等。使用工具如Oracle Enterprise Manager、MySQL Workbench或SQL Server Management Studio来获取这些指标的实时数据,并分析其变化趋势。
  2. 识别并解决性能问题:通过分析数据库的性能指标和执行计划,识别潜在的性能问题。例如,高CPU使用率可能提示需要进行查询调优、缓存大小不合适或索引失效等问题。根据问题的具体原因采取相应的措施,如重写查询、调整数据库参数或重新设计索引。
  3. 优化查询性能:分析和调优频繁执行的查询语句,以提高其性能。可以考虑优化查询的执行计划、添加索引、使用合适的连接方式(如INNER JOIN、LEFT JOIN等),避免不必要的全表扫描或排序操作。
  4. 缓存管理:配置适当的缓存大小,包括数据库缓冲区和查询结果缓存,以减少磁盘IO操作。根据实际需求和可用资源,调整缓存参数,并定期监测和调整缓存命中率。
  5. 确保合适的硬件资源:评估数据库服务器的硬件配置,包括CPU、内存和磁盘系统等。确保硬件资源足够支持数据库的负载和性能需求。如果性能问题与硬件相关,可能需要升级硬件或增加服务器节点。
  6. 定期维护和优化数据库:执行定期的数据库维护任务,如碎片整理、索引重建、统计信息收集等。这些任务有助于提高查询性能、减少存储空间的使用,并促进数据库的稳定性和可靠性。
  7. 调整数据库参数:根据数据库的特点和负载需求,调整数据库的参数设置。这包括内存分配、并发连接数、日志设置等。根据实际情况进行实验和测试,找到最佳的参数配置。
  8. 数据库复制和分区:对于大型数据库,可以考虑使用数据库复制和分区来提高性能和可扩展性。数据库复制可以将读操作分布到多个节点上,减轻单一节点的压力。数据库分区可以将数据按照某种方式进行划分,使查询只针对特定分区,从而提高查询性能。

DBA数据库工程师 SQL 慕k高性能查询优化语句,一些经验总结

  1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null; 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

代码语言:javascript复制
select id from t where num = 0;

  2.应尽量避免在 where 子句中使用!=或$amp; 3.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20; 可以这样查询:

代码语言:javascript复制
select id from t where num=10
union all
select id from t where num=20;

  4.in 和 not in 也要慎用,因为IN会使系统无法使用索引,而只能直接搜索表中的数据。如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了:

代码语言:javascript复制
select id from t where num between 1 and 3;

  5.尽量避免在索引过的字符数据中,使用非打头字母搜索。这也使得引擎无法利用索引。 见如下例子:

代码语言:javascript复制
SELECT * FROM T1 WHERE NAME LIKE ‘%L%’;
SELECT * FROM T1 WHERE SUBSTING(NAME,2,1)=’L’;
SELECT * FROM T1 WHERE NAME LIKE ‘L%’;   --第三个查询能够使用索引来加快操作

即使NAME字段建有索引,前两个查询依然无法利用索引完成加快操作,引擎不得不对全表所有数据逐条操作来完成任务。而第三个查询能够使用索引来加快操作。

dba

0 人点赞