首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏DBA随笔

    ​redo log的被动机制

    通常来讲,redo log的时机是在事务提交的commit阶段采取的,在此之前,redo log都存在于redo log buffer这块指定的内存区域中。 这里我们首先要明确两个概念和两个参数: write: fsync:持久化到磁盘 write()指的是MySQL从buffer pool中将内容写到系统的page cache中,并没有持久化到系统磁盘上 binlog fsync到磁盘上 取值N:每次提交事务都将binlog write到磁盘上,累计N个事务之后,执行fsync 但是,在某些特定场景下,redo log会在commit这个动作到来之前进行操作 ,例如下面的两种情况会让没有提交的事务的redo log写入磁盘: 1、redo log buffer占用的空间即将达到buffer pool的一般的时候,后台线程会主动,这个时候,由于事务没有提交 这个fsync的存在,再加上每秒一次的后台操作,innodb会认为redo log在commit的时候,就不需要fsync了,只write到文件系统的page cache就够了。

    4.9K30发布于 2020-06-19
  • 来自专栏软件设计

    RocketMQ源码分析之机制

    一、机制 1 时机 RocketMQ消息存储有了顺序写和内存映射的加持,写入性能得到了极大保证。 同步又称为组提交,RocketMQ的GroupCommitService服务每次收集10ms内的写请求,一次CommitLog文件。优点是能够保证消息不丢失,但是效率偏低。 RocketMQ先将消息写入到堆外并立即返回响应生产端,然后异步将堆外的消息提交到页缓存,再异步。该机制最大优势是实现了批量化消息写入,缺点是消息会丢失。 图片 二、同步 同步采用组提交机制GroupCommitService,每次发送线程将消息写入到mmapedFile后,创建一个请求GroupCommitRequest,添加到requestsWrite ,但是每隔10ms一次,性能不如异步

    1.5K70编辑于 2023-04-02
  • 来自专栏大数据与实时计算

    【kafka】高吞吐源码分析-顺序写入与机制

    2.2.0的源码分析其机制顺序写入与机制的细节。 kafka本身提供强制机制来强制,下文将详细介绍 附加锁写入: Log -> LogSegment -> FileRecords // kafka.log.Log private def append 参数 kafka提供3个参数来优化机制 log.flush.interval.messages //多少条消息1次 log.flush.interval.ms //隔多长时间1次 log.flush.scheduler.interval.ms //周期性的。 log.flush.interval.messages log.flush.interval.messages即多少条消息1次,这个参数在Log类中使用。

    3.6K52发布于 2020-04-03
  • 来自专栏瓜农老梁

    RocketMQ存储--同步和异步【源码笔记】

    工作流程 3.异步线程类FlushRealTimeService工作流程 四、消息追加与线程类的交互 1.调用链 2.同步主要代码 3.异步主要代码 五、方式示意图 1.同步示意图 2.异步未开启堆外缓存示意图 3.异步开启堆外缓存示意图 六、文章总结 七、主要源码类清单 一、问题思考 1.同步是怎么工作的? 即相对偏移量,到什么位置了,下次从此处即可 2.flushedWhere 标记已经的物理偏移量,根据此位置可精确查找到文件中消息的存储位置。 #handleDiskFlush 2.同步主要代码 同步时构造请求,将请求提交给线程类GroupCommitService,service.putRequest(request),并获取盘结果 2.异步未开启堆外缓存示意图 ? 3.异步开启堆外缓存示意图 ?

    2.7K20发布于 2019-08-23
  • 来自专栏开源部署

    MySQL InnoDB 日志管理机制中的MTR和日志

    1.MTR(mini-transaction)  在MySQL的 InnoDB日志管理机制中,有一个很重要的概念就是MTR。 MTR是InnoDB存储擎中一个很重要的用来保证物理写的完整性和持久性的机制。 先看下MTR在MysQL架构中的位置。 MTR是上面的逻辑层与下面物理层的交互窗口,同时也是用来保证下层物理数据正确性、完整性及持久性的机制。 2.日志的触发条件 触发条件 描述 时间 线程默认每秒刷新一次。 ) 0:每次事务提交时,根本不会去日志缓冲区。 该模式下,MySQL会每秒执行一次 flush(到磁盘)操作。 注意事项 当设置为0,该模式速度最快,但不太安全,这种设置是最危险的。

    1K10编辑于 2022-08-17
  • 来自专栏idba

    针对 MySQLInnoDB 调优

    www.percona.com/blog/2020/05/14/tuning-mysql-innodb-flushing-for-a-write-intensive-workload/ 前言 这篇文章是讲述 InnoDB 策略系列文章的第三篇 MySQL 8.0.19 之前的版本 innodb_io_capacity 该参数的默认值是200,如果你阅读过我们之前写的文章, innodb_io_capacity 定义了 InnoDB 后台线程脏页时的 5.7 中的默认值为0,但奇怪的是,在 8.0 中的默认值是10 。 默认值是10 ,最大值为70 。 我们还花费大量时间阅读代码以了解 InnoDB 的运行机制。像往常一样,我们对评论持开放态度,但如果可能,请尝试通过引用代码或可重现的用例来支持任何反对我们观点的论点。

    2.5K31编辑于 2022-07-30
  • 来自专栏java 成神之路

    RocketMQ 同步实现原理

    (后台定时任务进行,每隔10毫秒批量10毫秒中如果有多个请求,则多个请求一块) service.putRequest(request); //等待请求结果(最长等待5秒钟,盘成功后马上可以获取结果 同步时使用 GroupCommitService 异步时使用 FlushRealTimeService 如果开启 isTransientStorePoolEnable 则同时也使用 CommitRealTimeService 策略。 CommitRealTimeService 策略和 FlushRealTimeService 策略是同时运行的 这里先介绍下同步策略 同步策略 class GroupCommitService

    1.5K10发布于 2019-01-03
  • 来自专栏架构师之路

    ,还是不,是一个问题 | 架构师之路重启

    数据库使用缓冲池(buffer pool)机制提升读写效率; 2. 数据库以数据页(page)为单位管理缓冲池; 3. 如果被读取的数据在缓冲池中,直接从缓冲池中读取数据; 4. 缓冲池中的数据不能实时回磁盘,毕竟事务还没有提交; 此例中,缓冲池中的数据被修改为2,磁盘上的数据仍是1(如上图)。 那么,问题来了,如果缓冲池满了,要将哪些数据回磁盘呢? 如果事务未提交,“脏”数据不会被回磁盘; 2. 如果事务已提交,数据会被回磁盘。 反之,如果将数据回磁盘,但此时事务T1还没有提交/回滚,事务T1的脏数据回磁盘,事务T1的ACID特性也会被破坏。 我们似乎陷入了一个两难的境地。如果是你,你会考虑用什么思路解决这个问题呢? 数据库使用缓冲池(buffer pool)机制提升读写效率; 2. 数据库以数据页(page)为单位管理缓冲池; 3. 数据库直接读写缓冲池中的数据; 4. 此情况,,还是不

    24510编辑于 2024-07-01
  • 来自专栏小小挖掘机

    Python 系列 10 - Cufflinks

    样本组合 考虑一个样本组合(sample portfolio),它包含 100 个不同的借贷人,有如下三个假设: 组合的总规模为 1000,意味着平均每个借贷人的敞口(exposure)为 10。 没有其他高违约的借贷人的损失敞口超过 10。 最大的单一头寸(接近 50)的违约概率极小,几乎为 0。 接下来我们来看信用组合在不同区域的分布。广义来讲,区域可按地理,行业或者借贷人规模来分类。

    1.2K21发布于 2020-04-14
  • 来自专栏王的机器

    Python 系列 10 - Keras (上)

    Keras 会自动帮你连起来,那么 Flatten 层接受形状 28 × 28 的二维数据,输出形状 780 的一维数据 第一个 Dense 层接受形状 100 的一维数据,输出形状 10 的一维数据 第二个 Dense 层接受形状 10 的一维数据,输出形状 10 的一维数据 每个层(除了 Flatten 层)的第二个参数设定了激活函数的方式,比如 第一个 Dense 层用 relu,防止梯度消失 第二个 Dense 层被命名为 dense_6 输出形状是 (None, 10),好理解。 参数个数为 1010,考虑偏置项,(100+1)×10 = 1010。 在测试集上第一张图上做预测,输出是一个数组,里面 10 个数值代表每个类别预测的概率。看上去是第 10 类(索引为 9)概率最大。 import numpy as np print( np.argmax(prob) ) print( y_test[0] ) 9 9 前面讲了 Fashion_MNIST 第 10 类是踝靴(Ankle

    2.4K10发布于 2019-08-27
  • 来自专栏小赵的Java学习

    MySQL的机制

    可以通innodb_io_capacity参数来控制InnoDB的能力,这个值建议设置成磁盘的IOPS,通过fio工具可以测试出磁盘的IOPS,命令如下: fio -filename=$filename -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=500M -numjobs=10 -runtime=10 - InnoDB的速度就通过脏页比例和redo log写盘速度来控制的. 一旦一个查询请求需要在执行过程中刷掉一个脏页时,这个查询就可能要比平时慢了,MySQL中的一个机制可能会让查询更慢。 通过innodb_flush_neighbors可以控制这个行为,值为1的时候会有上述的连带机制,MySQL8.0以下默认为1。 ​

    1K30编辑于 2022-12-02
  • 来自专栏青益云记

    「  etchdroid制作启动-手机制作启动  」

    有的时候电脑坏了,想要重装系统来解决,却无奈没有重装电脑的系统,所以本文介绍一款APP,可以让你在手机上刻录系统镜像在U盘上 材料准备: 1.EtchDroid(这款APP将在文末提供下载链接) 2. 系统镜像(自己准备去) 3.OTG线(请确认你的手机是否支持OTG) 4.U(存储卡和读卡器的组合也行) 准备 将U插进OTG线的一段,并且接入手机 该APP分为两个模块,第一个是刻录ISO格式的 ,适用于Windows和Linux,第二个是刻度苹果系统的(看自己要刻录那种) 点击进去后,选择你的U,然后选择文件刻录,然后会出现自动挂在后台刻录 -个人 挺便利的软件,经过测试刻录出来是可以正常使用的

    11.4K20编辑于 2023-01-03
  • 来自专栏Java开发者

    Apache RocketMQ 策略与复制策略

    由于磁盘速度大于网卡速度,那么的进度肯定可以跟上消息的写入速度。 同步(SYNC_FLUSH): ? 2.png 返回成功状态时,消息已经被写入磁盘。 消息写入内存 pagecache 后,立即通知线程,完成后,返回消息写成功的状态。 同步与异步的唯一区别是异步写完 pagecache 直接返回,而同步需要等待完成才返回, 同步流程如下: 写入 pagecache 后,线程等待,通知线程线程后,唤醒前端等待线程,可能是一批线程。 前端等待线程吐用户返回成功。 复制策略: 同步复制(SYNC_MASTER): master 和 slave 都写成功后返回成功状态。 推荐策略: 异步(ASYNC_FLUSH) + 同步复制(SYNC_MASTER)。

    1.5K60发布于 2019-04-11
  • 来自专栏c盘清理

    win10 c红了

    win10 c红了 如果你的 windows 10 c: 驱动器图标或状态灯变成红色, 通常意味着驱动器几乎满了, 这是系统提示存储空间不足, 需要释放空间, c: 驱动器满会让电脑变慢, 阻碍更新, 如果释放空间不够 清理后如果驱动器仍然接近满, 考虑升级存储, 可以增加第二块内部硬盘或用更大容量的固态硬盘替换当前驱动器, 也可以把用户文件夹移动到另一块, 但这需要小心操作并备份数据, 在做重大改动前总要备份重要资料 定期清空回收站和清理下载文件夹, 尽量不要把大媒体文件放在系统盘上, 使用云存储保存不常用的文件, 打开存储感知来自动删除临时文件, 每月检查一次磁盘空间, 提早发现增长, 防止 c: 驱动器再次变红. windows 10 把用户文件夹移动到另一个驱动器安全吗 可以但有风险, 如果操作不当可能会破坏程序设置或权限, 先备份数据, 或者在另一创建新用户帐号以避免问题, 按步骤小心操作.  

    19310编辑于 2026-01-16
  • 来自专栏c盘清理

    window10 c满了

    window10 c满了 你的 windows 10 c 已满,系统不断提醒你,这会让电脑变慢,停止更新,应用表现异常。 move,这样文件还在但存放在别的,c 就有更多可用空间。 保持足够的可用空间 设置 storage sense 自动运行,定期清理浏览器缓存,下载大文件时尽量先搬到别的,保持至少 10 15% 的磁盘空闲以保证良好性能,每月检查一次可以防止磁盘突然满。 常见问题(FAQ)  删除 c 文件会损坏 windows 吗? c 需要多少空闲空间? 目标是至少保留 10 15% 的空闲空间,空闲空间太少会让系统变慢并阻止更新,如果你用大型应用或剪辑视频,留更多空闲空间更好。  可以把已安装的程序移到别的磁盘吗?

    17210编辑于 2026-01-16
  • 来自专栏c盘清理

    c红了怎么清理c空间win10

    c红了怎么清理c空间win10 如果你的 c: 驱动器在 windows 10 上显示为红色, 说明可用空间不足, 文件资源管理器里出现红色条是提示分区剩余空间很少, 系统和应用运行会受到影响, 空间不足会使电脑变慢 把文件移动到别的或云端 如果有其他内置磁盘或外置 usb 硬盘, 把视频, 图片, 文档等大文件夹移动过去, 右键文件夹, 属性 位置, 把它移动到新以保持路径更新, 也可以使用 onedrive windows 运行需要多少空闲空间 建议保留至少 10-15% 的驱动器空闲空间, 比如 500 gb 的目标是 50 到 75 gb 空闲, 空间不足会影响更新和性能,。   可以把已安装程序移动到别的吗 部分应用支持移动, 在 设置 应用 中选择应用看是否有 移动 选项, 其他程序可能需要先卸载再安装到另一,。  

    47410编辑于 2026-01-16
  • 来自专栏shysh95

    MySQL字符串索引&脏页

    MySQL在更新数据的时候会写redo log并且更新内存以后就会返回,数据文件并不会立即更新,这就是所谓的WAL机制。 什么叫脏页? 内存数据页中的内容被写入磁盘数据页中的过程称为脏页。 什么时候会脏页? ,如果一次淘汰的脏页太多,会导致查询响应时间变长 MySQL空闲时,会进行脏页操作 MySQL正常关闭时,会进行脏页操作 InnoDB如何控制脏页的频率? into @b from global_status where VARIABLE_NAME = 'Innodb_buffer_pool_pages_total'; select @a/@b; 连坐机制 InnoDB在脏页的时候,如果该脏页旁边的页也是脏页,会同时把相邻的脏页刷掉。

    81110编辑于 2022-02-16
  • 来自专栏SH的全栈笔记

    MySQL 表数据多久一次

    表数据 我们这篇「短文」讨论的是【MySQL 表数据多久一次】,从这个标题中我们可以分裂成两个问题: 什么到磁盘 什么时候到磁盘 我们分开来讨论。 2. 和 InnoDB 的其他日志例如 Redo Log 一样,这些日志都是有自己的策略。 例如 Redo Log,其策略可以用下图来表示: 参数为0,Redo Log 会每隔一秒,写入并且入磁盘。 举个例子,Buffer Pool 中总共有 100 张页,脏页如果达到了 10 页就会启动后台线程,触发刷。 换句话说,默认情况,阈值是 10%,如果需要自定义,则最大值不能超过 90%。 4. 谁来负责 上个小节已经说过了,会启动线程来专门做这个事情,这个没有什么疑问。

    1K10编辑于 2022-08-17
  • 来自专栏编程随想曲

    U安装Windows10系统

    Windows10-ISO镜像文件[2] 3. U-16G 制作启动U 1. 格式化U •选中U-右键-格式化 •文件系统选择[NTFS],其他保持默认 •点击[开始],等待弹框提示[格式化完成]即可 2. 写入硬盘镜像 •用UltraISO打开Windows10-ISO镜像文件 •点击[启动]-[写入硬盘镜像] •[硬盘驱动器]选择U所在盘符,其他保持默认 •点击 启动计算机同时连续按F12进入系统启动选项,选择U进行启动 3. 此时会进入Windows10系统安装引导界面,按提示操作即可 References [1] UltraISO: https://cn.ultraiso.net/xiazai.html [2] Windows10

    2K20编辑于 2022-04-21
  • 来自专栏程序员的成长之路

    【原创】JVM 的类加载机制它!

    JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化。 10. OSGI(动态模型系统) OSGi(Open Service Gateway Initiative),是面向 Java 的动态模型系统,是 Java 动态化模块化系统的一系列规范。

    1.1K20发布于 2020-04-21
领券