本期,边肖将为您带来关于如何使用MYSQL或ORACLE管理POSTGRESQL的信息。文章内容丰富,从专业角度进行分析和叙述。看完这篇文章,希望你能有所收获。
之所以写这篇文字,是因为很多星展致力于学习PG数据库,遇到了一些困难。其实我提出这个话题的时候,也是在想每个数据库都有自己适合的管理方法,有些是管理方法,但又无可奈何。最近有人问POSTGRESQL是更接近ORACLE还是MYSQL。
为什么会提出这样一个话题,
1在使用PG之前,提问者使用或管理的数据库已经深入骨髓,我们用原来的管理方式来管理新的数据库是很正常的。我们都愿意把已有的经验运用到新的事务中,加快对新事物的理解和运用。
低估了新事物与原有体验的冲突,比如坐公交车出国。如果不按STOP按钮,公交车到站就会停,但这种情况在中国不会发生。更有意思的是,按错按钮就得下车,因为对不起,别问我怎么知道的。
因此,今天的话题有些有趣和散漫。将三个数据和用户体验结合成一个MIX是一个有趣的话题。
1在Oracle中没有数据库的概念(类似于MYSQL SQL SERVER),但是在ORACLE中有一个SCHEMA的概念,在ORACLE世界中可以看作是一个SCHEMA或者一个DATABASE。
MYSQL中没有SCHEMA的概念,它使用不同的数据库来划分逻辑或物理数据信息。
3像POSTGRESQL、SQL SERVER这样的数据库属于比较型,想做什么就做什么。它们都有SCHEMA和DATABASE的概念。你想怎么分都行。但是,由于SQL SERVER的历史原因,使用数据库进行分区是很常见的。
在这里,问题是如何处理PG。PG中SCHEMA和ORACLE的概念没有什么不同,但遗憾的是,他对DATABASE的概念和MYSQL没有什么不同。好像PG属于踩两只船的那个。
当我们使用PG时,我们更倾向于将所有的表插入到一个数据库中,然后用SCHEMA用户权限来管理它们。
或者使用MYSQL或SQL SERVER在一个INSTANCE中创建多个数据库,用不同的用户管理每个数据库,这样更符合PG的个性。
根据下面的官方文本,如果我们以ORACLE的方式管理PG,并在一个数据库中创建多个SCHEMA,即放弃PG的多个数据库的概念,只使用一个数据库,我们将会遇到另一个问题,autovacuum worker。
仔细考虑后,清理线程由一个数据库清理。如果所有的表都填充到一个数据库中,那么即使在一个数据库中设置了多个WORKS,我是否可以推断只能使用一个清理线程?(如果这个理解有误,请告诉我谢谢。).
这就引出了另一个不同的概念。在ORACLE中,有UNDO LOG和线程需要清理,但PG的原理是没有REDO UNDO LOG,如果由表本身实现,就会有DEAD的祖先。不及时清理死去的祖先会引发一系列问题。
所以暂时我只能理解,如果要用ORACLE的方式管理PG的数据库,最好表不要太大,数量不要太多。
换一种说法,我用MYSQL来管理,总是可以避免上面的顾虑,但是PG对其他库的数据访问没有MYSQL那么简单,从库名和表名中选择*即可。
,可以跨库查询,但是通过dblink连接同一个INSTANCE中的不同数据库(PG的正式名称应该是cluster)。这超出了MYSQL数据库管理员的理解范围,也很麻烦。
这时我陷入了一种PG不好用的思维模式。和ORALCE相比,和MYSQL相比,SQL SERVER就不一样了。在既定的模式下,我们无法理解为什么这个PG这么奇怪。不是站着,不是坐着。
其实我不这么认为。学习一个新事物,一定不要抱着原来的思维模式去学习。这可能会让一切都感觉不如我方便。但事实上,如果你深入PG的研究,你会发现除了这些东西,PG的可扩展性和多态性是其他数据库无法比拟的。
既然我们对上述问题有一定的了解,就可以避免一些可能出现的问题。例如,我可以使用ORACLE来管理PG并建立多个SCHEMA。但是,如果一组表与另一组表无关,我将在PG CLUSTER上创建一个新的数据库,并将这些没有逻辑的表放在另一个数据库中。或者我可以创建一个跨库VIEW来解决需要DBLINK的麻烦,用适合pg的方式管理PG,忘记用ORACLE或者MYSQL的方式管理PG,因为PG是PG的不同烟火。
这是如何用MYSQL或ORACLE管理POSTGRESQL,以上小编分享。如有类似疑问,不妨参考以上分析了解。想了解更多,请关注行业信息渠道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/46797.html