jre*_*d42 2 oracle sql oracle-11g connections
我们使用的是非常强大的Oracle 11G机器;有冗余存储等。据我所知,这是一个野兽。
我们刚刚为一个工具获得了这个数据库,当我第一次加入合作社时,它大约有 20 人在使用,现在已经超过 150 人。我是唯一一个致力于它的人:(
我们目前有一个系统,可以在整个数据中心分发 PERL 脚本,基本上为我们提供了一种“网格”计算能力。
Perl 脚本运行某种模拟并将结果报告给数据库。他们确实选择/插入。每个脚本的负载不是很高,但它可能同时发生在 20-50 个系统上。
然后我们让多个数据中心和用户都使用相同的方法访问同一个数据库。
我们的主要问题是我们的数据库因连接过载而不得不删除一些连接。我们有时有超过 500 个连接。这些是旧的 perl 脚本,它们不能很好地处理这个问题。从本质上讲,它们失败了,结果丢失了。我宁愿避免重写很多这些,因为它们写得不好,甚至连看都头疼。
数据库本身没有过载,只是连接开销太高。我们打开一个连接,进行快速查询,然后断开连接。连接很短,但很多。数据库团队基本上已经说过我们需要减少连接数,否则他们会忽略我们。
因为它分布在我们的农场中,所以我们无法实现持久连接。我用我们的网络服务器来做这件事;但它在一个固定的系统上。其他是由分发工具打开和关闭的 perl 脚本,因此不会一直运行。
我解决这个问题的最佳方法是什么?脚本本身可以等待连接打开。他们不需要立即采取行动。某种排队系统?
有人建议我设置一些名为“SQL Relay”的工具实例。也许每个数据中心都有一个。这个工具有多可靠?这种方法有多好?它能满足我们的需要吗?
我们可以为每个数据中心设置一个,并通过它将请求中继到我们的主数据库,保持开放的持久连接管道?这有意义吗?
您还有其他建议吗?有任何想法吗?任何帮助将不胜感激。
可悲的是,我只是一个在一家非常大的公司工作的 coop 学生,不知何故所有这一切都落在了我的肩膀上(实际上没有人可以寻求帮助;它是一家硬件公司,每个人都是硬件工程师,而数据库团队毫无用处和在印度)我很迷茫,因为最好的方法是什么?
我工作过度,这个问题干扰了正在进行的工作,基本上需要尽快解决;最好不要重写整个系统,不要购买硬件(不会发生),也不要用脚射击自己。
帮助大声笑!
Gar*_*ary 11
“我们打开一个连接,进行快速查询,然后断开连接。连接很短,但很多。”
我会尝试使用共享服务器连接。在 unix 机器上运行的 Oracle 需要一个 unix 进程来完成会话请求的“工作”。通常,在专用连接下,它会在会话连接时派生一个新的 unix 进程,并在会话断开连接时将其终止。
在共享服务器下,DBA 定义了最小和最大连接数,比如 100 和 250。在启动时,数据库分叉出 100 个进程,它们坐在那里等待连接。如果它收到 150 个请求,它将启动所需的额外 50 个进程。如果它收到 300 个请求,其中 50 个将挂起,直到 250 个(最大)进程之一可用。
重要的是,这些进程在会话的生命周期内不与特定会话相关联,而仅与特定调用相关(例如,单个插入或更新)。这确实对内存使用有一些影响。调用之间保留的任何内容都必须位于共享内存 (SGA) 而不是进程内存 (PGA) 中。然而,在 11g 下,数据库可以在 SGA 和 PGA 之间移动内存,因此这不像以前那么重要。
在这里阅读更多
| 归档时间: |
|
| 查看次数: |
303 次 |
| 最近记录: |