数据库优化指南:如何将基本功能运用到极致?
一次问题
数据库的归档日志很多,多到那个机器的硬件不足以处理了。查看了一下为什么产生这么多日志。发现其实都是一些不当的使用方式。比如开发人员建立了一个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上都是这样做。那是因为开发同学不懂也不知道数据库的临时表应该怎么做。
看上去是炒冷饭不是新功能,但是就是这样的旧功能都没用好
IT168与ITPUB技术社区强强联手,收集数百款主流数据库产品,重磅推出“数据库全景图”,旨在打造一款集知识普及、产品对比、选型参考于一体的综合性资源平台。“数据库全景图(11月版)”可扫描上方左侧二维码回复关键词获取,识别右侧二维码直达“数据库全景图”链接(右上角浏览器打开获取更好体验)。
大厂新春礼盒大赏,谁是真正的福利王者?字节、腾讯、美团、阿里、京东、小红书……
国产数据库崛起正当时,2024年数据库回顾
微软代码埋雷,Linux内核6.13险翻车,英特尔和AMD紧急救场
只因把https改成http,带宽减少了 70%!
没二十年功力,写不出这一行看似无用的代码!
新来的妹纸rm -rf,把公司整个数据库删没了
一台服务器最大支持多少TCP连接?问倒一大片
从4.75s到0.6s,我仅动了一条SQL
公司来的新同事,把代码耗时从 26856ms 优化到了 748ms ……
号外!《核心系统分布式数据库选型指南》电子书(附下载)正式上线
解锁数据架构现代化密码,《实时数仓选型指南》电子书(附下载)正式上线啦