数据库的读写分离

读写分离详解 面对日益增加的系统访问量,数据库的吞吐量面临着巨大瓶颈。 对于同一时刻有大量并发读操作和较少写操作类型的应用系统来说,将数据库拆分为**主库**和**从库**,主库负责处理事务性的增删改操作,从库负责处理查询操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善。 通过读写分离,就可以降低单台数据库的访问压力, 提高访问效率,也可以避免单机故障。 阅读详情

        读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

       为什么要分库、分表、读写分?

       单表的数据量限制,当单表数据量到一定条数之后数据库性能会显著下降。数据多了之后,对数据库的读、写就会很多。分库减少单台数据库的压力。接触过几个分库分表的系统,都是通过主键进行散列分裤分表的。这类数据比较特殊,主键就是唯一的获取该条信息的主要途径。比如:京东的订单、财付通的交易记录等。。。该类数据的用法,就是通过订单号、交易号来查询该笔订单、交易。

        还有一类数据,比如用户信息,每个用户都有系统内部的一个userid,与userid对应的还有用户看到的登录名。那么如果分库分表的时候单纯通过userid进行散列分库,那么根据登录名来获取用户的信息,就无法知道该用户处于哪个数据库中。

       或许有朋友会说,我们可以维护一个email—-userid的映射关系,根据email先查询到userid,在根据userid的分库分表规则到对应库的对应表来获取用户的记录信息。这么做是可以的,但是这个映射关系的条数本身也是个瓶颈,原则上是没有减少单表内数据的条数,算是一个单点。并且要维护这个映射关系和用户信息的一致性(修改登录名、多登录名等其他特殊需求),最大一个原因,其实用户信息是一个读大于写的库,web2.0都是以用户为中心,所有信息都和用户信息相关联,所以对用户信息拆分还是有一定局限性的。

       对于这类读大于写并且数据量增加不是很明显的数据库,推荐采用读写分离+缓存的模式,试想一下一个用户注册、修改用户信息、记录用户登录时间、记录用户登录IP、修改登录密码,这些是写操作。但是以上这些操作次数都是很小的,所以整个数据库的写压力是很小的。唯一一个比较大的就是记录用户登录时间、记录用户登录IP这类信息,只要把这些经常变动的信息排除在外,那么写操作可以忽略不计。所以读写分离首要解决的就是经常变化的数据的拆分,比如:用户登录时间、记录用户登录IP。这类信息可以单独独立出来,记录在持久化类的缓存中(可靠性要求并不高,登陆时间、IP丢了就丢了,下次来了就又来了)

        以oracle为例,主库负责写数据、读数据。读库仅负责读数据。每次有写库操作,同步更新cache,每次读取先读cache在读DB。写库就一个,读库可以有多个,采用dataguard来负责主库和多个读库的数据同步。

你如何理解mysql读写分离和分库分表? 前言 相信很多小伙伴们对于这两个概念已经比较熟悉了,这篇文章全程都是大白话的形式,希望能够给你带来不一样的感受。如果你之前不太了解这两个概念,那我建议你搞懂之后,可以把自己对于读写分离以及分库分表的理解讲给你的同事/朋友听听。 读写分离&分库分表 读写分离 何为读写分离? 见名思意,根据读写分离的名字,我们就可以知道:读写分离主要是为了将对数据库的读写操作分散到不同的数据库节点上。 这样的话,就能够小幅提升写性能,大幅提升读性能。 我简单画了一张图来帮助不太清楚读写分离的小伙伴理解。 一般情况下, 阅读详情

相关推荐

分析型数据仓库中读写分离的实现

本文作者为神策数据(ID:SensorsDataCrop)资深研发工程师张广强,版权归神策数据所有。 和以 MySQL 为代表的传统事务型数据库相比,数据仓库有一个很大的特点,就是主要面向批量写和查询进行优化,可以不支持更新、事务这些高级特性。一些商用的数据仓库分析系统,例如 Vertica,已经可以做到千亿级数据的秒级导入和秒级查询。神策数据一直致力于帮助企业搭建数据仓库,实现数据的秒级响应,积累

优快云研发技术 8375

一文详解高性能数据库:读写分离

虽然近十年来各种存储技术飞速发展,但关系数据库由于其 ACID 的特性和功能强大的 SQL 查询,目前还是各种业务系统中关键和核心的存储系统,很多场景下高性能的设计最核心...

大数据星球-浪尖 6363

SpringBoot+Flowable 6.8.0实战:5分钟搞定免登录流程图设计器

本文详细介绍了如何通过SpringBoot与Flowable 6.8.0深度整合,快速实现免登录流程图设计器的集成方案。通过排除默认安全配置、自定义安全策略和用户模拟服务,开发者可在5分钟内完成设计器的部署,适用于快速原型开发和企业内部工具搭建。

weixin_29204205的博客 280

数据库:读写分离

本文主要介绍数据库中读写分离的知识

AWSDN的博客 2909

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 764

5.2.4_标志位的生成

计算机组成原理之标志位的生成

人生得意须尽欢 7596

laravel5.2 DB数据库 读写分离

Laravel 读写分离 在datbase配置文件的内部 - 找到config/database.php- 可以定义任何类型的多个数据库连接。    使用方法:  想学习更多laravel中多个DB链接方法:  http://fideloper.com/laravel-multiple-database-connections

pz_winner的博客 667

如何解决群晖Docker注册表查询失败/无法拉取镜像等问题

如何解决群晖Docker注册表查询失败/无法拉取镜像等问题

XiaoqiangClub的博客 1万+

应用层数据库读写分离db-loadbalance

web应用中,最先遇到性能瓶颈的就是数据库了。对于解决这个性能问题,首选方案就是数据库的读写分离。这里不谈如何构建数据库的读写分离方案,想谈的是当我们有了数据库的读库与写库如何进行读写分离。如果数据库本身就提供读写分离,或者说数据库本身支持读写分离,那么对于用户来说那是再好不过了,比如oracle rac就可以。另外还有mysql replication 驱动,当然它需要与应用事务结合。 在此想

snoopy 1733

【Matlab】多旋翼无人机视觉伺服跟踪控制程序

本文介绍了基于Matlab的多旋翼无人机视觉伺服跟踪控制程序开发方法。该系统采用视觉感知、坐标转换、伺服控制和仿真验证四个核心模块,通过HOG+SVM目标检测、Shi-Tomasi特征提取和PID双闭环控制算法实现动态目标跟踪。详细阐述了相机标定、目标检测、坐标转换及伺服控制等关键环节的Matlab实现代码,并进行了仿真验证。结果表明该系统在±0.1m的跟踪精度下可实现100Hz的实时处理,适用于室内外复杂场景。文章还提出了工程应用中的优化建议,为无人机视觉伺服系统的开发提供了完整的技术方案。

unber的博客 507

qiankun 主子应用部署教程(Nginx 小白版)

本地开发:不用 Nginx,直接localhost:端口即可。本地模拟线上:用hosts + Nginx + 自定义域名,效果和生产接近。线上部署主应用只要配置 history 模式子应用必须支持 CORS + history + 缓存能跑是因为默认 server 兜底,但推荐写真实域名。主应用 vs 子应用的 Nginx 配置区别为什么本地和线上表现不一样history 模式 + 跨域的最佳实践。

专注于前端开发与实战技巧,记录从零到一的学习与项目经验。分享 Vue3 / JavaScript / TypeScript / Flutter /Uniapp等前端技术,以及 性能优化、工程化、最佳实践。 999

Zabbix DB 读写分离实施方案

Zabbix作为一个成熟的企业级监控系统,在部署初期可能表现良好。但随着监控项数量从几百个增加到数万甚至数十万个,以及业务规模的持续扩展,数据库负载会呈现指数级增长。特别是在高频率数据采集、复杂触发器计算和历史数据存储的场景下,单个数据库实例往往难以承受。

Made In SQL 1015

VisionPro 机器视觉案例 之 彩色保险丝个数统计

CogColorSegmenterTool CogColorMatchTool

机器视觉李小白的博客 2353

django 数据库读写分离配置

前言: django在进行数据库操作的时候可以进行读写分离 如: 读取数据与写数据(增、删、改)可以分别从不同的数据库进行操作。 1. 在配置文件中增加slave数据库的配置 DATABASES = { # 主机(写) 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '10.211.55.5', 'PORT': 3306, 'USER': 'user',

weixin_42194215的博客 340

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 348

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Zabbix DB 读写分离

Zabbix数据库读写分离是指通过将数据库的读操作(SELECT查询)和写操作(INSERT、UPDATE、DELETE等)分配到不同的物理数据库服务器上,以减轻主数据库负载并提高系统整体性能的架构方案。I/O瓶颈:频繁的历史数据写入导致磁盘I/O压力增大CPU瓶颈:复杂的数据查询消耗大量CPU资源连接数限制:大量前端界面访问和后台处理竞争数据库连接读写分离通过将读操作分流到从库,可以有效解决这些问题。监控设备超过500台的中大型环境历史数据保留周期超过3个月前端用户并发访问量大的情况。

Made In SQL 1222

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Impeccable Extract Flow 指南:把重复 UI 沉淀为设计系统 Tokens 与组件

Impeccable 是一个面向 AI Agent 的设计技能(skill),其 `extract` 命令负责在既有前端代码库中识别可复用的模式、组件与设计令牌(design tokens),并把它们抽取、固化为系统的设计系统资产。本文以仓库内 [reference/extract.md](https://link.gitcode.com/i/0638cf933f460897d196c85b7e4

gitblog_00043的博客 407

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据仓库:实现读写分离提高性能

总的来说,读写分离是一种在分析型数据仓库中提高性能、可伸缩性和可用性的有效技术。通过将读和写操作分离到不同的数据库服务器上,组织可以更有效地处理大量数据,并提高查询速度和分析能力。这种分离使得读操作可以轻松地从缓存中获得高性能,而写操作则可以确保数据的一致性和完整性。在分析型数据仓库中,读写分离是一种将读和写操作从数据库中分离出来的过程。通过将读和写操作分离到不同的数据库服务器上,可以提高系统的性能和可伸缩性。通过将读和写操作分离到不同的服务器上,组织可以在不影响读操作的情况下进行数据库的维护和升级。

weixin_41888295的博客 110

django数据库读写分离

1. 配置数据库 settings.py文件中 用SQLite: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'salve': { 'ENG...

毛毛腿的博客 1201

实战案例——构建读写分离的数据库集群(超详细)

目录 一、认识读写分离 01、读写分离概念 读写分离:基本的原理是让主数据库处理事务性增(insert)、改(update)、删(delete)操作而从数据库处理查询(select)操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 02、读写分离的作用 因为数据库的“写”(写100,00条数据到MySQL可能要3分钟)操作是比较 耗时的,但是数据库的“读”(从MySQL读100,00条数据可能只要5秒钟)。所以读写分离可以解决数据库写入时影响查询效率的问题。 03、读写分离应用场景 数

清瞳清的博客 3794

基于nginx的TCP Proxy实现数据库读写分离

nginx很早就支持tcp proxy,但是一直不知道其使用,最近在nginx blog上看见了,一些实践者将其运用到数据库访问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲具体的搭建实现,只是最一些理论上的设计猜想。直接上图 db集群,分为读db和写db,写db向读db同步数据。读db只能读,写db只能写,图中读写各一个,只是一个例子,实际需要根据业务来配置读写服务器比例。ngi

周翔的专栏 4849

django 日志多个服务连接_Django 中实现连接多个数据库并实现读写分离

读写分离其基本原理就是让主数据库处理事务性增,改,删操作(INSERT,UPDATE,DELETE)操作,而从数据库处理SELECT查询操作,数据库复制被用来把事物性操作导致的变更同步到其他从数据库,以SQL为例,主数据库负责写数据,读数据,读库仅负责读数据,每次有写库操作,同步更新到读库,写库就一个,读库可以有多个,采用日志同步的方式实现主库和多个数据库的数据同步具体配置如下在配置文件中增加sl...

weixin_39661345的博客 93

Django ORM 数据库设置和读写分离

一、Django的数据库配置   (一)修改settings.py文件关于数据库的配置:     Django默认使用sqlite: # Django默认的数据库库,SQLit配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', # sqlite引擎 'NAME': os...

A_xiansheng的博客 370

yii2数据库读写分离db配置

yii2数据库读写分离db配置 <?php return [ 'class' => 'yii\db\Connection', 'charset' => 'utf8', //多主多从 'masters' => [ ...

weixin_30477797的博客 214
上一篇: Mysql分表,分区的区别和联系
下一篇: 数据库的垂直切分和水平切分
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值