oracle 随着用户不断攀升遇到性能瓶颈了怎么办?

2018-10-17 23:26:42 +08:00
 gancl

我们的两节点 oracle 查询量多时经常挂掉, 是部署在自建机房或 IDC 的. 了解到阿里云有提供兼容 oracle 的产品 ppas, 但这价格太贵了,相比于免费的不注册的 oracle 来说. 还不能试用,不知道效果不能马上买的. 或者有其他只要能解决我们的痛点的解决方案吗? 我们用机器一年前已经买了 20 万价格的性能的机器. 现在遇到瓶颈了. 切换到 mysql 吗? 工程量可能有点大? mysql 可以解决性能问题吗?

4780 次点击
所在节点    数据库
51 条回复
oovveeaarr
2018-10-18 00:35:13 +08:00
如果是频繁读取无法缓存的内容,建议考虑下群集,做读写分离,或者列队处理之类的,尽量保证异步处理吧。
likuku
2018-10-18 00:38:10 +08:00
假若要 Oracle 转 PG,或许可以尝试下 EnterpriseDB,基于 PG 作的商业产品,但也有免费版,目标就是兼容 Oracle,
当年它们噱头就是高度兼容 Oracle,迁移工作量小,有迁移工具。

Homepage | EnterpriseDB : https://www.enterprisedb.com/
bukip
2018-10-18 00:44:51 +08:00
遇到性能瓶颈了怎么办? 加硬件
gefranks
2018-10-18 01:13:48 +08:00
1. 买 oracle 的 support 了么? 什么版本的 DB, 打了什么补丁?
2. 错误日志是否已经拿到?
lolizeppelin
2018-10-18 02:13:00 +08:00
我觉得坑在业务层

用 oracle 的很多都喜欢拿 oracle 的存储过程写代码
一堆业务逻辑都往里塞
kslr
2018-10-18 02:24:57 +08:00
当然是迁移了,虽然不如 Oracle
但是免费什么规模的方案都有
fortunezhang
2018-10-18 08:32:33 +08:00
我说下我的处理,和楼上差不多。我的业务是一个定时任务,没 5min 跑一次所有的数据;一个 web,提供数据分析。开始做的时候觉得没什么问题,等到数据大了,请求大的时候,在 cup 密集运算的时候就会出现等待。比如请求 2 周的数据。我的步骤是这样的:
1.定时任务单独在一个端口上跑
2.web 在另外一个任务上跑
3.这种以天为单位的数据,cache 起来,楼主可以用 file 或者可以用 ,跑在定时任务的应用上,每天凌晨跑。
4.当有请求天的数据是,先判断有没有这个文件,有的话直接异步读取用,没有的话,直接计算,然后存储,返回。

建议:
1 楼主说的瓶颈在问题里面描述清楚,我在评论里找了好久。
2 既然设计到了年,那么可能这块会复杂一些,以年,月,日为单位分别存储,在融合起来会麻烦一些。写一个通用接口自动计算是必须的,但是规则也提前想好,读大于写次数要考虑进去。
3.既然 oracle 遇到了瓶颈,那么其他数据库解决可能性也不大,除非 oracle 存储了关系型数据。 我感觉瓶颈不在与数据库,在于业务的处理。
nandaye
2018-10-18 08:38:59 +08:00
oracle 单机都能玩挂,换 MySQL 没有专业人员更容易出问题。感觉是你们配置有问题,oracle 亿级多表关联,导出千万数据从来没挂过,这种级别的软件正常来说再大的压力也只会性能变差,不可能完全挂掉,否则谁还敢用
ShareDuck
2018-10-18 09:01:58 +08:00
@lolizeppelin #25 哈哈,还真是,我之前搞了半年的 Oracle,真的写了一大堆的存储过程。不过当时用的是小型机,所以性能不是问题,批量处理数据时最长的过程是 15 分钟。但在测试机( PC Server )上跑时经常死锁,哈哈。
ShareDuck
2018-10-18 09:04:30 +08:00
@gancl #10 我们现在是手动设置的,例如设置为凌晨 3 点才进行批量处理。当然,用户体验是不好的。不好我们完全不用考虑这个问题,因为我们是内部的系统,哈哈。
janus77
2018-10-18 09:17:08 +08:00
@fortunezhang #27 基本同意,做成分离的应用,用单独的服务器资源、单独跑定时任务,每天凌晨都跑,百万级,经过常规优化( db 配置优化、sql 优化、索引、应用层代码逻辑优化等等)可以撑住了。
同时发现楼主说平时不忙的时候也会莫名其妙的慢下来,感觉主要还是在常规优化上做文章。
linxl
2018-10-18 09:18:39 +08:00
查询挂掉就加缓存啊。。。
cstj0505
2018-10-18 09:19:12 +08:00
@gancl postgresql 的 copy 功能可接,导文件。到的标准输出或者直接在代码里把数据转成二进制用 copyin,我们之前一个项目也遇到这个问题,后来从 mysql 换到 pg 解决
jingrui
2018-10-18 09:41:01 +08:00
oracle 没毛病,程序上优化吧
est
2018-10-18 09:42:51 +08:00
应该是使用姿势不对。对数据结构动刀子可破
zarte
2018-10-18 09:51:37 +08:00
移动的数据是提交计划,如果有就直接下载,要不然就要等一段时间。每天的报表是自动定时生成。
USNaWen
2018-10-18 10:12:06 +08:00
扩容 or 加一个硬件层 buffer。
试试傲腾?
xiaoxinshiwo
2018-10-18 13:45:38 +08:00
@gancl #7 需要将导出的业务进行隔离,数据也要进行隔离,分库,然后归档,优化导出逻辑
dalieba
2018-10-18 15:19:15 +08:00
负载均衡了解一下
philipjf
2018-10-18 15:33:50 +08:00
你怎麽會覺得 MySQL 能解決 Oracle 解決不了的性能瓶頸的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/498611

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX