【应用 业务】做数据库技术支持的一点感悟

简介: 想不出什么好标题,也不想做什么标题党。说说今天工作中遇到的问题吧!先总结一句:了解应用的DBA才是一名合格的DBA!开发人员要求解决一条SQL 语句问题。即过滤自身,比如id1234点id=1的那行,显示id in (2,3,4)的就对了起初以为很简单,写了一条大致如下:select * from t where not exists(select 1 from t t1 where t1.id=:id and t.id=t1.id)这个是测试的语句,一个是笛卡尔乘积,一个是关联查询。

想不出什么好标题,也不想做什么标题党。说说今天工作中遇到的问题吧!先总结一句:了解应用的DBA才是一名合格的DBA!
开发人员要求解决一条SQL 语句问题。即过滤自身,比如
id
1
2
3
4
点id=1的那行,显示id in (2,3,4)的就对了
起初以为很简单,写了一条大致如下:
select * from t where not exists
(select 1 from t t1 where t1.id=:id
 and t.id=t1.id)
这个是测试的语句,一个是笛卡尔乘积,一个是关联查询。严格的说要有性能上的考量().
SELECT
    a.pk_equipdaliy,a.vbillstatus
FROM
    ycam_equipdaliy a ,
    ycam_equipdaliy b
WHERE
    b.vbillstatus = 1
    -- AND COALESCE (dr, 0) = 0
    --AND a.pk_equipdaliy!=b.pk_equipdaliy
    and a.pk_equipdaliy    AND a.vbillstatus= 1

SELECT
    a.pk_equipdaliy, a.vbillstatus
FROM
    ycam_equipdaliy a
WHERE
    -- AND COALESCE (dr, 0) = 0
   a.pk_equipdaliy  in
    (
        SELECT
           b.pk_equipdaliy
        FROM
           ycam_equipdaliy b
        WHERE
           b.vbillstatus = 1
           AND a.pk_equipdaliy !=b.pk_equipdaliy
    )
AND  a.vbillstatus = 1
  两条在数据库里面跑时,都能得到正确的结果,但是当写到应用层,由java代码调用时,结果却一直报错。
       判断sql本身没有问题,在开发执行调试状态时,同时在执行上述sql 语句时,发现表被锁住了。于是一步一步调试,调试到执行sql获取结果集时,问题出现了,sql语句所查询的表的一个字段 vbillstatus被修改由原来的3变为1。导致执行上述sql时,数据一致性遭到了破坏。于是梳理业务应用和业务逻辑。底层的代码的确在 “审核” 这一步,就把字段值修改了!最后只能通过应用程序而不是sql语句来解决问题。
   总结一下:天花了半天的时间来处理这个问题,最终解决了!对于数据库技术上没有什么收获,但是感悟是:作为一个行业软件的服务供应商的数据库技术支持,一定要了解应用,了解业务流程。这样才能准确而快速的定位问题的所在,进而更快的解决数据库问题。

附上盖国强大师对DBA 七点建议:

1.实时监控数据库告警日志
这是必须进行的工作,并且应该根据不同的严重级别,发送不同级别的告警,及时了解数据库的变化与告警。

2.实时监控数据库的重要统计信息
实施监控对于数据库运行至关重要、能够表征数据库重要变化的统计信息,并且据此发送报警信息。那么应当监控哪些统计信息呢?大家可以思考一下,对于单机、RAC环境各不相同。

3.部署自动的Statspack/AWR报告生成机制
每天检查前日的AWR报告,熟悉数据库的运行状况,做到对于数据库了如指掌

4.每天至少优化和熟悉一个Top SQL
根据AWR或Statspack报告,每天至少了解或熟悉一个Top SQL,能优化的要提出优化和调整建议

5.部署完善的监控和数据采样系统
DBA应该对数据库部署完善的监控系统,并对重要信息进行采样,能够实时或定期生成数据库重要指标的曲线图,展现数据库的运行趋势。

6.全面深入的了解应用架构
不了解应用的DBA是没有前途的DBA,对应用了解不深入的DBA算不上Expert,所以一定要深入了解应用。

7.撰写系统架构、现状、调整备忘录
根据对数据库的研究和了解,不断记录数据库的状况,撰写数据库架构、现状及调整备忘录,不放过任何可能的优化与改进的机会。

目录
相关文章
|
4月前
|
分布式数据库 数据库 数据安全/隐私保护
开发者关注的数据库技术与创新,未来数据库的演进及理想数据库的构想
作为开发者,想必大家都知道在技术圈中数据库相关领域是技术开发中的重中之重,数据库技术与创新不断推动着数字化时代的发展,数据库技术正在经历着一次创新的浪潮,还有就是数据库技术的不断创新为开发者们在日常实际开发中提供了更多的可能性和好的机遇。那么本文就来简单聊聊最值得开发者关注的数据库技术与创新,包括分布式数据库、图数据库、时序数据库、区块链数据库以及AI与数据库的结合等方面,以及探讨未来数据库的演进趋势,并讨论一下在开发者心目中最理想的数据库的特征与构想。
79 3
|
数据库
组织数据库技术实战心得体会
组织数据库技术实战心得体会
|
安全 数据库
瑶池来了!你期待的数据库长什么样?
瑶池来了!你期待的数据库长什么样?
324 0
|
SQL 运维 5G
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
企业运维训练营之数据库原理与实践—数据库DAS简介和备份上云方案—性能诊断与优化(下)
163 0
|
运维 数据库
《买单侠数据库架构之路--基于云平台的数据库运维》电子版地址
买单侠数据库架构之路--基于云平台的数据库运维
67 0
《买单侠数据库架构之路--基于云平台的数据库运维》电子版地址
|
运维 监控 测试技术
|
SQL 存储 Oracle
杨传辉:深挖 OceanBase 背后的技术逻辑,助力数据库核心系统升级
数据库是信息社会的基础设施,通过开放开源助力数据库技术的快速发展,构建新一代数据基础设施是大势所趋!在“2021云栖大会 . OceanBase 原生分布式数据库论坛” 上,OceanBase CTO 杨传辉为大家带来了一场主题为《OceanBase 一体化架构助力核心系统升级》的演讲。
222 0
杨传辉:深挖 OceanBase 背后的技术逻辑,助力数据库核心系统升级
|
存储 安全 关系型数据库
阿里云数据库快速搭建疫情分析系统最佳实践
疫情降临,疫情态势分析和防控任务迫在眉睫,如果快速搭建高效的疫情态势分析系统是众多部门和单位的难题,阿里云RDS PG+Ganos解决方案可在极短时间内完成分析系统搭建,有效助力疫情防控。
阿里云数据库快速搭建疫情分析系统最佳实践
|
人工智能 Cloud Native 大数据
阿里云新品发布会周刊第101期 丨 传统数据库向阿里云数据库的迁移难吗?
2019年-2023年,中国金融云解决方案市场年复合增长率将达到40.2%,2023年,市场规模将达到35.9亿美元,而建设核心将重点围绕数据管理与分析展开。本次发布会,阿里云原生多模数据库Lindorm联合智臾科技DolphinDB正式发布金融时序大数据量化分析解决方案。
1133 0
阿里云新品发布会周刊第101期 丨  传统数据库向阿里云数据库的迁移难吗?
|
数据库
阿里云数据库产品有奖调研
阿里云数据库团队希望能够更加真切、具体的了解到不同您的诉求,帮助您解决业务使用场景中遇到的实际问题,请帮忙填写阿里云数据产品有奖问卷,有机会获得代金券哦。
413 0
阿里云数据库产品有奖调研