数据库优化指南:如何将基本功能运用到极致?

一次问题

数据库的归档日志很多,多到那个机器的硬件不足以处理了。查看了一下为什么产生这么多日志。发现其实都是一些不当的使用方式。比如开发人员建立了一个xxxx_temp从这么名字上就应该能猜出来这是要做什么?美其名曰是临时表。

就是导入一批数据,给这些数据做一系列加工(运算),然后再把这些数据删除。用SQL来描述,就是insert 1亿,update 1亿,再delete 1亿。(这里说的1亿是虚数)最终表上是0行数据,但是日志产生了3亿行的操作日志。其实不应该这样用的。如果了解数据库原理就不会这样做。

正确示例

mmm表和xxg2表都是空的。

给xxg2表写入两条数据。

然后把xxg2表的临时数据最终放到mmm表中。然后提交。

最终mmm表中的数据达成预期落地了。而xxg2表作为临时表。被清空了。整个过程不需要对xxg2表做delete。也就不会产生对应的归档。

当然在xxg2表上的insert和update也几乎不会产生日志,或者可以忽略所谓产生的日志。这样对数据库的压力就小很多。无效的工作都不需要记录了。

区别是全局临时表

create global temporary table xxg2 (id int ,name varchar2(10)) on commit DELETE ROWS;

这是真正的临时表,而日常开发同学建立的都是临时性质的表。这一点无论Oracle、MySQL还是PG上都是这样做。那是因为开发同学不懂也不知道数据库的临时表应该怎么做。

看上去是炒冷饭不是新功能,但是就是这样的旧功能都没用好

很多数据库的功能仅仅DBA掌握是没有用的。要让开发掌握这才能用好。只在DBA手中的特性是发挥不出来的。我讲完这些旧特性,开发同学非常高兴的走了,去体会和实践了。

相关推荐
蓝速科技5 分钟前
商用复杂环境翻译机耐用性选型指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
starzy199042 分钟前
Flink Sliding Window 详解及代码实现:从窗口重叠到状态爆炸防控
运维·数据库·flink
jnrjian1 小时前
DRG-50857 ORA-30576 drixmd.PurgeKGL CTXSYS
数据库·oracle
志栋智能2 小时前
集成是关键:让巡检超自动化融入现有工具链
运维·服务器·数据库·架构·自动化
IvorySQL2 小时前
PostgreSQL 日报|逻辑解码竞态条件修复(9 月 20 日)
数据库·人工智能·postgresql
adinnet20263 小时前
为什么 RAG 需要 Milvus?向量数据库到底存了什么
大数据·数据库
Elastic 中国社区官方博客4 小时前
使用 Elasticsearch 和 Jina 进行 AI 视频搜索:精准找到你需要的视频片段秒数
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
Omics Pro4 小时前
新型条件传输模型!虚拟细胞扰动预测
数据库·人工智能·算法·机器学习·自然语言处理
实验室管理云平台4 小时前
环境检测实验室管理系统:提升效率与数据准确性的关键工具
大数据·数据库·科技
SelectDB技术团队4 小时前
快手基于 Apache Doris 千亿多模态检索的实践
数据库·数据分析·全文检索·快手·apache doris·向量索引·多模态检索