twitter 反差 数据库优化指南:怎样将基本功能欺骗到极致?
一次问题twitter 反差
数据库的存档日记好多,多到阿谁机器的硬件不及以贬责了。检察了一下为什么产生这样多日记。发现其实齐是一些失当的使用格局。比如征战东说念主员竖立了一个xxxx_temp从这样名字上就应该能猜出来这是要作念什么?好意思其名曰是临时表。
即是导入一批数据,给这些数据作念一系列加工(运算),然后再把这些数据删除。用SQL来描画,即是insert 1亿,update 1亿,再delete 1亿。(这里说的1亿是虚数)最终表上是0行数据,然而日记产生了3亿行的操作日记。其实不应该这样用的。若是了解数据库旨趣就不会这样作念。
正确示例
twitter 反差
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手中的特质是推崇不出来的。我讲完这些旧特质,征战同学绝顶欢欣的走了twitter 反差,去体会和实际了。