在极高负荷情况下oracle redolog的配置建议

2023-11-05

在极高负荷情况下oracle redolog的配置建议

在oracle数据库的现有体系结构下,redolog承担了很大的压力。这是因为所有提交给数据库的交易都需要在commite确认前通过LGWR进程将相关信息写入redolog,而一个oracle实例只有一个LGWR进程,并且在UNIX系统上该进程是一个单线程程序,所以只能运行在一个内核上。在早期的主机系统上这个问题并不严重,但是随着多内核/多线程技术的发展-目前已经有了可以支持128个内核/256个线程的主机,而且支持更多内核和线程的主机即将出现,这个问题将表现得更加严重。
你想象一下如下场景,就可以感受到LGWR进程的处境:
有一个水池(redolog),只有一个人(LGWR)可以把水桶(transsion)里的水(transsion data)倒进去,这个人的边上站了127个人(server processor)不停的争相把手中的水桶(transsion)交到他的手中。
虽然我们很同情这个倒霉的老兄,可是由于oracle这个黑心的老板不愿意给它加派人手,我们也只好想想其它办法来加快他的工作速度了,比如强健一下他的体魄或者改造一下水池结构,让他工作起来轻松一点。
本文就是讨论如何让LGWR进程工作起来更有效率。
由于目前的主机不支持不同型号的CPU混用,所以给他吃独食(用高性能CPU运行该进程)是不可能了。但是我们可以让操作系统的进程调度程序给它开小灶,让它的运行优先级比其它oracle进程高,或者干脆把它设为实时进程,让他尽量不受操作系统进程调度的影响,尽可能多地占用CPU时间,从而达到让它多干活的目的。
那么如何改造水池(也就是redolog文件)呢?其实很简单,就是把它放到最快的存储设备上就行了。
内存毫无疑问是整个计算机系统中我们可以设置的最快存储设备,通过memory FS或者ramdisk软件,我们就可以在系统的内存空间中分出一部分来存储redolog文件。这个办法乍看起来确实不错,我们所需要付出的就是多买点内存。可是仔细想想,就会觉得有问题了。为什么呢?万一主机或主机上的软件(如:操作系统/数据库/应用)出现问题导致系统crash,oracle数据的完整性就没法保证了。所以我建议,除非你的系统是拿来演示系统性能的-如TPCC测试,就不要使用这个方法。
另外一个选择的可靠性就强多了,速度也很不错,可惜就是一个字-贵!好在支撑如此庞大和繁忙的业务系统的用户肯定不缺钱,所以应该问题不大。废话说了很多,答案到底是什么?cache LUN!目前市场上有一些厂商(如惠普/HDS)的最高档磁盘阵列支持在它的内部cache中划一部分出来存储一些对速度要求极高的数据,这部分的CACHE在主机看来和普通磁盘空间没有区别,可是由于这些数据是存在磁盘阵列的cache里,不需要写入物理硬盘,所以性能奇快。至于数据的安全性,由于高端存储都有专门的电源设计用来保证即使外部电源断电,CACHE中的数据也不会丢失,加上这些存储的控制软件可靠性极高,基本上不存在软件crash的可能性,所以应该可以放心。
如果很不幸,你的老板是既要马儿跑又要马儿不吃草的主,不愿意出钱使用cache LUN,那就只能尽量使用最好的存储设备,然后研究它的手册,把这个存储的每一滴血都榨出来。一个需要注意的事项是存储redolog的设备尽量不要与存储数据库其它文件的设备相互干扰。如果可能,最好把redolog和其它文件放在不同的存储设备上。
下面我们讨论几个在晚上经常问到的问到的问题:
1.我们应该使用裸设备还是文件系统?
如果只从性能最佳角度考虑,当然是裸设备,因为它会带来5~20%的性能提高。当然,文件系统的管理要比裸设备容易得多。
2.我想使用文件系统,但是又想尽可能的提高性能,该怎么办?
我的第一推荐是用veritas JFS软件的quick IO功能,第二个推荐就是仔细的调整文件系统的相关参数,尽可能的提高性能(详见我的另一篇文章《如何优化ORACLE redolog使用的文件系统性能》)

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在极高负荷情况下oracle redolog的配置建议 的相关文章

  • Oracle REGEXP_INSTR() 和“a-z”字符范围与预期不匹配

    我想用REGEXP INSTR 在 oracle 数据库中检查小写 大写字符 我知道 upper and lower POSIX 字符类 但我选择了a z这给了我非常奇怪的结果 我不明白 有人可以解释一下吗 SELECT REGEXP IN
  • 从java运行sqlplus脚本的简单方法

    我有包含 sqlplus 特定脚本的 sql 文件 它包括 或 作为语句终止符 执行存储过程的 EXEC 等 我需要从 java jdbc 执行此脚本 而不需要 sqlplus sql ant任务 maven sql插件无法处理不同的终止符
  • C# 中的 Oracle 连接 - 连接字符串

    我目前正在尝试用 C 构建一个应用程序并将其连接到在 Oracle 11g 中运行的实时数据库 我有以下连接详细信息 Host IP 10 204 1 3 Port 1521 DB Name PROD 我的源代码 string connSt
  • 时间:2019-03-17 标签:c#datatypes->oracledatatypes

    我喜欢在 Oracle 数据库中保存不同的 C 数据类型 int decimal double string Guid 有谁有一个表显示要使用哪些 Oracle 数据类型 我找到了一些表格 显示了哪些 c 数据类型可用于不同的 oracle
  • 什么是更好的?子查询或内连接十个表?

    一个旧系统已抵达我们的办公室进行一些更改和修复 但它也存在性能问题 我们并不确切知道这种缓慢的根源是什么 当我们重构旧代码时 我们发现了几个具有以下模式的 sql 查询 出于示例目的 简化了查询 SELECT SELECT X FROM A
  • 查询以查找平均加权价格

    我在 Oracle 中有一个表 每个给定部分包含多行 每行都有一个与其关联的数量和价格 还有一个给定零件的行集相加的总数量 以下是数据示例 我需要的是获得该零件的平均加权价格 例如 如果数量为 100 的零件的价格为 1 数量为 50 的零
  • 仅使用 SQL 进行 Base 36 到 Base 10 的转换

    出现了一种情况 我需要在 SQL 语句的上下文中执行以 36 为基数到以 10 为基数的转换 Oracle 9 或 Oracle 10 中似乎没有内置任何内容来解决此类问题 我的 Google Fu 和 AskTom 建议创建一个 pl s
  • Oracle 数据库 11g 中的访问控制列表 (ACL) 拒绝网络访问

    最近我们从 Oracle 10g 切换到 11g 现在我发现我的邮件功能不起作用 我现在收到错误 ORA 24247 network access denied by access control list ACL 因此 我进行了一些谷歌搜
  • 转换不同世纪的日期

    我有暂存表 其中包含格式为 mm dd yy 的字符串形式的日期 我有 Oracle 11g 程序在加载到主表之前将字符串转换为日期格式 我在用着to date 03 20 34 mm dd rr 转换为日期格式 输出错误为 03 20 2
  • SQL Fiddle 输出错误

    其实我对 PL SQL 还很陌生 我在 SQL Fiddle 中使用 oracle pl sql 创建了下表 create table Employee name varchar2 100 id integer salary integer
  • Oracle 事务在 C++ 和 Java 之间的传播

    我们有一个现有的 C 应用程序 我们将逐步将其替换为新的基于 Java 的系统 在我们用 Java 完全重新实现所有内容之前 我们期望 C 和 Java 必须相互通信 RMI SOAP 消息传递等 我们尚未决定 现在我的经理认为我们需要 J
  • 如何在 Pro*C 查询中指定变量表达式列表?

    我尝试优化的 Pro C 查询出现问题 解释一下 我们的应用程序在一个巨大的数据库中搜索行 这些行存在于多种语言中 旧代码为数组中的每种语言选择一行 现在 由于这些查询是我们应用程序中最耗时的部分 因此我只想进行一个直接写入数组的查询 语言
  • 运行 Sqoop 导入和导出时如何找到最佳映射器数量?

    我正在使用 Sqoop 版本 1 4 2 和 Oracle 数据库 运行 Sqoop 命令时 例如这样 sqoop import fs
  • ORACLE 在立即执行中批处理 DDL 语句

    我正在尝试在一个 Execute Immediate 语句中运行多个 ddl 语句 我认为这会很简单 但看来我错了 想法是这样的 declare v cnt number begin select count into v cnt from
  • 如何从oracle存储过程中提取out变量?

    我有存储过程 其中有很多输出变量 所以我这样调用存储过程 export const infoHR3 async gt try const sql Declare ln order qty NUMBER ln in proc qty hr N
  • 我可以使用 VBA 将密码“传递”到 Excel 中的外部数据库连接吗?

    我正在尝试使用 VBA 隐藏我在 Excel 工作表中设置的数据连接的密码 由于 Excel 以纯文本形式存储外部数据源的密码 因此我想让 VBA 调用表的刷新并提供密码 我录制了刷新表格并输入密码的宏 但令我沮丧的是 它似乎省略了密码部分
  • 查看oracle中重复行的所有数据

    我有一个有 6 列的表 id name type id code lat long 前三个是必需的 ID是私钥 按序列自动插入 我有一些重复的行 正如两者所定义的name and type id是平等的 但我想查看受骗者的所有数据 我可以很
  • oracle lag 函数与 group by

    我有一个查询忽略从前一个值增加的值 例如 采用下表 col1 col2 col3 5 1 A 4 2 A 6 3 A 9 4 B 8 5 B 10 6 B 现在进行以下查询 select col1 from select col1 lag
  • 无法连接 ORA-12514: TNS: 侦听器当前不知道连接描述符中请求的服务

    我想将 PLSQL 开发工具连接到数据库 但由于以下错误而无法连接 ORA 12514 TNS 侦听器当前不知道连接描述符中请求的服务 检查下面的配置 如何配置才能使其正常工作 SQL gt select value from v para
  • SQL使用多个/相关列计算项目频率?

    我对 SQL 完全陌生 并且阅读了有关 SQL 的 StackOverflow 帖子来尝试弄清楚这一点 以及其他来源 但无法在 SQL 中执行此操作 开始 我有一个 3 列和数千行的表 其中包含前 2 列的数据 第三列当前为空 我需要根据第

随机推荐

  • nodejs require() of ES Module xxxxx not supported.

    某些 npm 库在 typescript 中使用时会存在这种情况 说一个解决方法 就是在 npm 官网中查看对应库的 version 看看是否有 cjs 版本 或者回退到上一个大版本
  • Java面试面经大合集(含答案),大厂越来越简单进了,

    Java面试笔记 尝到甜头的他开始得寸进尺 说5K的工资在北京根本生活不下去 没办法 我这人就是心软 在他一顿苦苦哀求后就答应再帮他想想办法 开会的时候灵光一闪想到了在阿里内部给他找两份大佬写的面试笔记 于是就有了最开始的一幕 被大佬逮到的
  • 前缀和实例4(和可被k整除的子数组)

    题目 给定一个整数数组 nums 和一个整数 k 返回其中元素之和可被 k 整除的 连续 非空 子数组 的数目 子数组 是数组的 连续 部分 示例 1 输入 nums 4 5 0 2 3 1 k 5 输出 7 解释 有 7 个子数组满足其元
  • 三个方法解决php并发问题

    福利 网络安全重磅福利 入门 进阶全套282G学习资源包免费分享 解决php并发问题的方法有很多 具体可以使用MySQL的行级锁 乐观锁和Redis的分布式锁等技术来解决 此外 还可以使用消息队列 多进程 多线程等技术来解决php并发问题
  • 人机交互-2-交互设计的原则与方法

    交互设计的原则与方法 交互设计中的问题 尽量减少用户需要记忆的部分 缺乏反馈 1 目标Goal vs 意图Intention 单个目标可对应多个意图 举例 删除文档中的部分内容的目标 意图1 通过编辑菜单删除 意图2 通过删除按钮删除 每个
  • CTF_Web_[GXYCTF2019]Ping Ping Ping

    一 题目 Ping Ping Ping 二 靶机信息链接 靶机信息 剩余时间 10072s http 70284b15 7c4e 4548 8b04 aadbc6e669f5 node4 buuoj cn 81 三 靶机链接页面 四 分析
  • Hector-SLAM初使用

    Hector SLAM初使用 首先把二维雷达的包拷贝到笔记本上 编译一次通过 连接也没有问题 rviz中可以看到原始激光 想演示一下二维激光雷达的SLAM建图 Hector SLAM相对比较容易 主要参考了下面的几篇博客 SLAM hect
  • 如何使用PowerDesigner软件进行数据库设计(多对多关系)

    如何使用PowerDesigner软件进行数据库设计 多对多关系 1 多对多关系示例 2 创建CDM 3 建立实体之间的联系 4 检查CDM 5 将CDM转换成PDM 6 由PDM生成sql文件 1 多对多关系示例 1 表名和字段 学生表
  • Spark Schema、Hive和Python的数据类型关系,以及Pyspark数据类型详解

    文章目录 1 概念阐述 1 1 Spark中支持的数据类型 1 2 Spark中的基本类型与Python数据类型 Hive表数据类型的对应关系 1 3 Hive中数字类型各自的表示范围 2 分类型介绍每种数据类型的详情 2 1 数字类型 B
  • 程序员保命技能,Mysql bin_log数据恢复,你还不知道吗?

    大家好我是迷途 一个在互联网行业 摸爬滚打的学子 热爱学习 热爱代码 热爱技术 热爱互联网的一切 无论你是正在路上的旅人 还是背上行囊 整装待发的学子 都可以点赞关注一下帅途的动态 当然如果帅途拿到比较好的学习资料或者看见比较好的文章也会第
  • 创建型模式(二):抽象工厂模式

    前面介绍的 工厂方法模式 中考虑的是一类产品的生产 如畜牧场只养动物 电视机厂只生产电视机 计算机软件学院只培养计算机软件专业的学生等 同种类称为同等级 也就是说 工厂方法模式 只考虑生产同等级的产品 但是在现实生活中许多工厂是综合型的工厂
  • [助兴篇]失业的程序员第八章-白话版

    http www shenyisyn org 2013 04 17 sycxy8 2 htm 博主昨天更新了 the jobless programmer 第八章 结果正评和负评参半 博主昨天在外地向我求助 希望我整个观后感 看在博主这么萌
  • golang的hijack篡取劫持

    一直不太明白golang的hijack是干什么的 只知道hijack这个词是篡取的意思 难道跟网关的作用一样 把client的请求发到这个服务上 然后这个服务帮忙转发到远端server 但是看了源码后就明白这个golang hijack是干
  • Matplotlib绘图的基本操作

    Matplotlib绘图
  • webpack和脚手架

    webpack和脚手架 前端工程化 什么是 前端工程化 什么是模块化 现阶段的模块化方案 模块化规范 浏览器端模块化规范 服务器端模块化规范 ES6 模块化 ES6的入门文件 服务端使用ES6模块化 按需导出与按需导入 直接执行模块代码 e
  • Web开发常见安全问题及解决

    Web攻击动机 恶作剧 关闭Web站点 拒绝正常服务 篡改Web网页 损害企业名誉 免费浏览收费内容 盗窃用户隐私信息 例如Email 以用户身份登录执行非法操作 从而获取暴利 以此为跳板攻击企业内网其他系统 网页挂木马 攻击访问网页的特定
  • ajax请求路径正确,可是页面提示404错误。

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 昨晚项目升级 开发环境 测试环境一切OK 一上线 页面空白 页面console打印404 查看后台日志报如下错误 Illegal mix of collations utf
  • 简述 Redis 的 安装 /持久化策略/内存策略/分片机制/哨兵机制/集群配置

    Redis 简介 Redis 是一种开源的 内存中的数据结构存储系统 它可以用作数据库 缓存和消息中间件 它支持多种类型的数据结构 如 字符串 strings 散列 hashes 列表 lists 集合 sets 有序集合 sorted s
  • win7系统中装Ubuntu系统

    结合网上经验亲自安装测试通过 故整理备用 一 分离磁盘空间 1 1 选中桌面计算机图标 gt 右键选择 管理 打开磁盘管理 1 2 以D盘为例 分离出50G左右磁盘空间 选中D盘 右键选择 压缩卷 输入需要分离出的磁盘空间 点击 压缩 完成
  • 在极高负荷情况下oracle redolog的配置建议

    在极高负荷情况下oracle redolog的配置建议 在oracle数据库的现有体系结构下 redolog承担了很大的压力 这是因为所有提交给数据库的交易都需要在commite确认前通过LGWR进程将相关信息写入redolog 而一个or