一、两种scaling方式
1,Vertical partitioning,生成的segments称为partitions
2,Horizontal federation,生成的segments称为shards
二、Storage engines
1,MyISAM
IBM开发的ISAM(Indexed Sequential Access Method)的扩展,是MySQL默认的storage engine
MyISAM由三个文件组成,.frm文件存储table定义,.MYD文件存储row data,.MYI文件存储索引
MyISAM使用table-level locking,三种lock类型,READ LOCAL、READ、WRITE
MyISAM不支持transaction
MyISAM的一个特性FULLTEXT索引:
mysql> SELECT * FROM articles WHERE MATCH (title,body)
-> AGAINST ('+foo -"bar baz"' IN BOOLEAN MODE);
MyISAM使用R-Tree索引支持GIS(geographical and spatial)
2,InnoDB
InnoDB完全支持ACID(atomicity, consistency, isolation, durability)
InnoDB支持transaction
InnoDB使用MVCC(Multi-Versioned Concurrency Control)支持row-level locking,concurrency支持很好
InnoDB支持foreign keys
InnoDB使用B-tree和clustered primary keys来存储索引
InnoDB tables中的row data根据primary key排序来存储,按顺序检索速度快
3,Berkeley DB
BDB数据库由成对的key、value组成,每个row存储为一个唯一的key、value对,按key检索速度快
BDB支持transaction和page-level locking
4,MEMORY
数据存储在内存中,不会持久化到硬盘
速度快,对临时表非常有用
三、MySQL备份
MySQL支持replication来帮助我们scale reads
1,Master-Slave Replication
Master: Reads and writes
|
| Replication
|
Slave、Slave、Slave... : Reads
可以很好的scale read capacity,但是不能scale write capacity
2,Tree Replication
Master: Reads and writes
|
| Replication
|
Slave/Master、Slave、Slave... : Reads
|
| Replication
|
Slave、Slave、Slave... : Reads
可以将一部分数据备份到Slave/Master中以增加频繁读取部分数据的Reads capacity
3,Master-Master Replication
Master: Reads and writes
|
| Replication
|
Master: Reads and writes
这种备份方式可以链成环,还可以为每个Master建立Slave以增强Reads capacity
以上各种备份均可能有Replication Lag和Stale read的问题
四、数据库Partitioning
数据库备份只能增加读性能而不能很好的增加写性能,所以引入数据库Partitioning
有两种方式:纵向(Clustering)和横向(Federation)
1,Clustering
Large database with 6 tables
| |
X
Cluster with 2 tables Cluster with 2 tables Cluster with 2 tables
缺点是维护困难,同时会增加连接数,这种Partitioning方式的scaling能力有限
2,Federation
MySQL5的NDB存储引擎尝试在内部实现横向Partitioning而我们不用更改程序逻辑
Oracle的RAC(Real Application Clusters)做同样的事情,只不过价钱太贵,$25,000/processor
SQL Server也有同样的实现,但是除了速度较慢外,你只能用Windows,而且价钱也是高达$30,000/processor
The key to avoiding cross-shard queries is to federate your data in such as way that all the records you need to fetch together reside on the same shard.
例如,一个页面中需要显示User的Profile和Comments,我们可以将User表与Comments表中相关的数据放在一个shard中
Application logic
|
|
Federation logic(Middleware)
|
|
Shard Shard Shard
当我们知道一个User的ID来查找User的Profile和Comments信息时,我们将User的ID传递给Middleware,Middleware知道去哪里查找User的Profile和Comments数据,然后Middleware来take care返回正确的数据给应用层
应用层不用知道有多少shards、数据在shards之间怎样划分、User数据被赋到哪个shard,一切都是透明的
分享到:
相关推荐
This provides unique insight into the challenges of scaling web databases, which in turn has driven the development of MySQL Cluster, integrating key technologies to enable the scaling of rapidly ...
总之,《MySQL Scaling and High Availability Architectures》为我们提供了宝贵的指导思想和技术实践,帮助我们构建稳定高效且可扩展的MySQL架构。通过对这些原理的理解和实践,可以有效地应对互联网应用所面临的...
开源项目-youtube-vitess.zip,Vitess is a storage platform for scaling MySQL. Brought to you by YouTube/Google.
高性能Bootloader及在线升级程序方案:STM32/DSP快速烧录Hex/Bin文件,底层协议解析与FLASH操作源码全解析,bootloader或在线升级程序方案,可提供上位机,不用跳线进入boot,可直接在线烧录hex或者bin文件,底层协议解析、FLASH操作源码以及开发文档,STM32或者DSP或者串口在线升级FPGA程序都可以或者其他类型MCU 目前DSP2803x、28004x以及28335均验证ok ,核心关键词:bootloader; 在线升级程序方案; 上位机; 不需跳线进入boot; 在线烧录hex/bin文件; 底层协议解析; FLASH操作源码; 开发文档; STM32; DSP; 串口在线升级FPGA程序; MCU; DSP2803x; 28004x; 28335。,基于STM32/DSP的在线升级与Bootloader方案:无需跳线,直接烧录Hex/Bin文件并支持协议解析和Flash操作源码开发文档
37_计算机二级office_演示文稿考点精讲_设置动画效果
2025最新《数字经济技能培训专题》考试题库及答案(通用版).docx
普铁高炉作业区危险源辨识与风险控制培训考试题及答案.docx
电机NVH分析的根原因查找与定子、转子谐波次数及电磁力波次对应关系表(Excel格式自动计算工具),电机NVH分析,根原因查找。 定子,转子谐波次数与电磁力波次数对应关系表。 excel格式,输入极槽等参数可以自动计算。 ,电机NVH分析; 根原因查找; 谐波次数; 电磁力波次数; 对应关系表; Excel格式; 极槽参数; 自动计算。,"电机NVH分析中,定转子谐波与电磁力波次数对应关系Excel工具开发"
Game Programming Gems 1 英文版 高清版PDF,带书签和OCR标注
基于ZigBee技术的鱼塘水质智能检测系统:实时数据无线传输至手机APP,独家定制设计,基于ZigBee的鱼塘水质检测系统 功能:1、通过终端ZigBee节点采集浊度,温度等水质数据,无线发送给ZIGBEE网关; 2、网关通过板载蓝牙模块将数据发送到手机APP; 3、手机端APP实时显示采集到的温度及浊度数据.。 独家设计,支持定制,欢迎洽谈设计本项目相关的任意项目设计 ,基于ZigBee的鱼塘水质检测系统; 无线数据采集与发送; 板载蓝牙模块; 手机端APP实时显示; 独家设计; 定制项目设计。,"ZigBee助力鱼塘监测:水质无线传输与智能监控系统"
步进电机闭环程序:西门子PLC与威纶通触摸屏实控,编码器监测丢步并报警,适合初学者学习教程,eb8000编程支持全系列机型,步进电机编码器闭环程序,西门子200PLC和威纶通触摸屏实控制步进电机本人自做威纶通触摸屏控制西门子200plc步进电机闭环程序,采用增量编码器查看是否存在丢步,若丢步大于10则报警,非常好的学习程序,带文字教程,适合初学者,威纶通采用eb8000编写,支持全系列机型 ,步进电机; 编码器闭环程序; 西门子200PLC; 威纶通触摸屏; 丢步检测报警; 文字教程; EB8000编写; 全系列机型支持。,“自编西门子PLC步进电机闭环程序,带EB8000界面防丢步报警教程”
高清电视音频解码的定点DSP 实现
基于单片机的电子万年历的设计论文资料
33_计算机二级office_演示文稿考点精讲_插入动作按钮
Matlab主动配电网优化重构程序:基于牛顿拉夫逊法的仿真实现与最优电源接入位置研究,matlab主动配电网优化重构程序 牛顿拉夫逊法的Matlab仿真程序 以网损费用最低作为目标函数,也可以改为其他目标,最终计算出最优电源接入位置,实现配电网的优化重构 有专门的文档说明和程序注释,好理解好上手 ,核心关键词:Matlab; 主动配电网优化重构程序; 牛顿拉夫逊法仿真; 网损费用最低目标函数; 最优电源接入位置; 配电网优化重构; 文档说明; 程序注释。,"MATLAB实现主动配电网优化重构:牛顿拉夫逊法仿真及多目标优化研究"
用AD激励的锁相环频率合成器
基于FPGA的双通道超声波信号发生器设计:实现方波、正弦波和三角波生成及电路原理图探究,基于FPGA的超声波信号发生器设计:程序和电路原理图,产生方波,正弦波和三角波,双通道。 ,基于FPGA的超声波信号发生器设计; 程序与电路原理图; 产生方波、正弦波和三角波; 双通道。,"FPGA双通道超声波信号发生器:方波、正弦波及三角波信号设计原理与实现"
UDS刷写上位机CAPL脚本定制开发:简易Panel界面+V公司CAN卡与oe软件联动,满足项目多样需求,UDS刷写上位机全套CAPL脚本,有简单panel界面,配合V公司CAN卡和oe软件即可实现刷写流程修改和上位机定制开发,满足各种项目需求。 代码非实物 ,UDS刷写; 上位机; CAPL脚本; 简单Panel界面; V公司CAN卡; 修改刷写流程; 上位机定制开发; 代码非实物,UDS刷写全套CAPL脚本,支持V公司CAN卡操作,面板简易界面定制开发解决方案
多点无线数据传输系统论文资料
经典永磁同步电机设计案例展示:技术参数与成熟方案的综合运用 该电机为高端量产型号,图纸详实齐全,转矩性能卓越,稳定性强。,经典37kw,3000RPM,112Nm, 6极36槽永磁同步电机(PMSM)设计案例(V型磁钢),该案例已制作样机,方案成熟,运行稳定,具有全套图纸,(图纸另外计算)可直接用于生产,齿槽转矩小(0.6Nm),转矩脉动小。 ,核心关键词:经典37kw;3000RPM;112Nm;6极36槽永磁同步电机(PMSM)设计;V型磁钢;方案成熟;运行稳定;全套图纸;齿槽转矩小(0.6Nm);转矩脉动小。,经典永磁同步电机设计案例:37kw-6极36槽V型磁钢电机,方案成熟稳定,可直接生产