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

简介:

想不出什么好标题,也不想做什么标题党。说说今天工作中遇到的问题吧!先总结一句:了解应用的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.pk_equipdaliy

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

相关文章
|
6天前
|
存储 安全 搜索推荐
酒店管理系统的数据库的应用以及选择
酒店管理系统数据库关乎运营效率和服务质量。数据库用于数据存储、管理、分析及客户关系管理,确保房态与预订精准。选择时重视性能稳定性、数据安全、易用性、可扩展性和成本效益。合适的数据库能提升酒店运营效率并优化客户体验。
19 2
|
1月前
|
存储 监控 关系型数据库
数据库核心术语解析与应用
数据库核心术语解析与应用
61 0
|
1月前
|
存储 运维 关系型数据库
数据的力量:构筑现代大型网站之数据库基础与应用
数据的力量:构筑现代大型网站之数据库基础与应用
47 0
|
8天前
|
存储 传感器 监控
数据库的应用
数据库广泛应用于电子商务、物流、酒店管理、医疗、航空、教育、政府和物联网等领域,用于高效存储和管理商品信息、订单数据、医疗记录、航班详情等各类数据,提升效率和服务质量。随着技术进步,其应用场景将持续扩展。
10 1
|
15天前
|
NoSQL 大数据 数据挖掘
现代数据库技术与大数据应用
随着信息时代的到来,数据量呈指数级增长,对数据库技术提出了前所未有的挑战。本文将介绍现代数据库技术在处理大数据应用中的重要性,并探讨了一些流行的数据库解决方案及其在实际应用中的优势。
|
27天前
|
存储 NoSQL 大数据
新型数据库技术在大数据分析中的应用与优势探究
随着大数据时代的到来,传统数据库技术已经无法满足海量数据处理的需求。本文将探讨新型数据库技术在大数据分析中的应用情况及其所带来的优势,为读者解析数据库领域的最新发展趋势。
|
1月前
|
存储 机器学习/深度学习 NoSQL
数据库技术的发展与应用
数据库技术的发展与应用
|
14天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
14天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
14天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)