数据库
文章平均质量分 87
数据库
lihuayong
这个作者很懒,什么都没留下…
展开
-
惊恐!数据硬删除了?那怎么恢复?
数据库表里的数据硬删除之后,如何快速恢复?原创 2024-08-29 00:16:55 · 311 阅读 · 0 评论 -
TCC分布式事务案例
业务场景介绍咱们先来看看业务场景,假设你现在有一个电商系统,里面有一个支付订单的场景。那对一个订单支付之后,我们需要做下面的步骤:更改订单的状态为“已支付” 扣减商品库存 给会员增加积分 创建销售出库单通知仓库发货这是一系列比较真实的步骤,无论大家有没有做过电商系统,应该都能理解。进一步思考好,业务场景有了,现在我们要更进一步,实现一个 TCC 分布式事务的效果。什么意思呢?也就是说,[1] 订单服务-修改订单状态,[2] 库存服务-扣减库存,[3] 积分服务-增加积分,转载 2020-08-06 17:03:18 · 1789 阅读 · 0 评论 -
读MySQL技术内幕 事务笔记
读《MySQL技术内幕 InnoDB存储引擎》事物笔记事物是数据库区别于文件系统的重要特性之一,数据库引入事物的主要目的:事物会把数据库从一种一致状态转换为另外一种一致的状态。事物的特性以及这些特性的实现方式:事物特性实现方式原子性重做日志 redo log持久性重做日志 redo log一致性回滚日志 undo log隔离性锁事物的隔离性,通过锁技术来实现,锁分为几种:事物隔离性锁算法锁范围读未提交(read-uncommit原创 2020-07-18 11:44:13 · 201 阅读 · 0 评论 -
读MySQL技术内幕 锁笔记
读《MySQL技术内幕 InnoDB存储引擎》锁笔记数据库管理的是磁盘上的文件,文件系统也是对磁盘文件的管理,那么数据库和文件系统有什么区别呢?首先假设这样一个场景,用户开启两个窗口,在这个窗口中,打开磁盘上同一个文件,起初两个窗口中看到的文件内容是相同的,现在用户在窗口1中修改了文件的内容,这个时候用户在窗口2中刷新文件内容,应该看到最新的内容吗?这得看用户自己的选择了。选择1:窗口2看到最新的实时的内容。选择2:窗口1中修改的文件内容保存到磁盘之后,窗口2才能看到保存之后的内容。选择3:窗口原创 2020-07-06 00:07:11 · 176 阅读 · 0 评论 -
读MySQL技术内幕 B+树与算法笔记
读MySQL技术内幕 索引与算法笔记。B+树的B不代表二叉(binary),而是代表平衡(balance),因为B+树最早是从平衡二叉树演化而来,但是B+树不是一个二叉树。B+树索引并不能找到一个给定键值得具体行。B+树索引能找到的只是被查找数据行所在的页。然后数据库通过把页读入内存,再在内存中进行查找,最后得到查找的数据。平衡二叉树定义:首先符合二叉查找树的定义,其次必须满足任何节点的左右两个子树的高度最大差为1。B+树B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找树。它所有记录节点都是转载 2020-07-04 18:00:33 · 174 阅读 · 0 评论 -
读MySQL技术内幕 InnoDB存储引擎笔记
后续有时间在对InnoDB存储引擎体系架构做补充说明…原创 2020-07-02 16:26:35 · 151 阅读 · 3 评论 -
CentOS 7 安装 Mysql
临时目录下载安装包cd /tmp1 下载mysql源安装包wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm2 安装mysql源yum localinstall mysql57-community-release-el7-8.noarch.rpm3 检查mysql源是否安装成...原创 2020-03-10 11:13:18 · 299 阅读 · 0 评论 -
分布式系统事务一致性解决方案
开篇在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例。传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库。我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数据库自带的事务管理机制来实现事务性的需求。关系型数据库通常具有ACID特性:原子性(Atomicity)、......转载 2018-04-16 11:18:15 · 416 阅读 · 1 评论 -
数据库分库分表
一、 基本思想Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个服务器上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。转载 2014-12-20 18:29:58 · 5561 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之MySQL可扩展设计的基本原则
一、什么是可扩展性 首先,我们需要清楚一个数据库据系统的扩展性实际上是主要体现在两个方面,一个是横向扩展,另一个则是纵向扩展,也就是我们常说的Scale Out 和Scale Up。 Scale Out 就是指横向的扩展,向外扩展,也就是通过增加处理节点的方式来提高整体处理能力,说的更实际一点就是通过增加机器来增加整体的处理能力。 Scale转载 2015-04-18 11:05:21 · 692 阅读 · 0 评论 -
MySQL集群节点参数说明
1. 定义MySQL集群管理服务器 [NDB_MGMD]部分(或其别名[MGM])用于配置管理服务器的行为。下面列出的所有参数均能被忽略,如果是这样,将使用其默认值。注释:如果ExecuteOnComputer和HostName参数均未出现,会为它们指定默认值localhost。 [NDB_MGMD]Id:集群中的每个节点都有唯一的标识,由从1到63的整数表示。所有的内部集群消转载 2013-10-09 22:50:17 · 4230 阅读 · 0 评论 -
MySQL集群手册
1. 集群与普通MySQL服务器区别 与没有使用集群的MySQL相比,在MySQL集群内操作数据的方式没有太大的区别。执行这类操作时应记住两点: 1.表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB集群存储引擎在集群内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编转载 2013-10-09 22:59:23 · 2081 阅读 · 0 评论 -
MySQL集群配置
1. MySQL集群简介 MySQL Cluster 是MySQL适合于分布式计算环境的高实用、高冗余版本。它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器。MySQL Cluster 是一种技术,该技术允许在无共享的系统中部署“内存中”数据库的 Cluster 。此外,由于每个组件有自己的内存和磁盘,不存在单点故障。MySQL原创 2013-10-09 22:41:20 · 6149 阅读 · 2 评论 -
mysql集群采用磁盘文件存储表
MySQL Cluster 5.1的一个最受期待的特性是集群已支持基于磁盘的数据存取。NDB存储引擎大大增强了MySQL Cluster的性能,该引擎之前是一个100%的内存数据库引擎。这种引擎对可以运行在内存里的数据库来说是极好的选择,现在基于磁盘的存取数据支持使MySQL 5.1集群拓展了数据库规模,使MySQL集群用户有能力创建更大的数据库而且能对其有效的管理。 对于必须转载 2013-12-08 11:23:15 · 3147 阅读 · 7 评论 -
MYSQL5.1双机热备配置
复制介绍 MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。原创 2014-01-04 22:22:37 · 2280 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之MySQL 数据库锁定机制
1. MySQL锁定机制简介MySQL 各存储引擎使用了三种类型(级别)的锁定机制:行级锁定,页级锁定和表级锁定。下面我们先分析一下MySQL 这三种锁定的特点和各自的优劣所在。l 行级锁定(row-level)行级锁定最大的特点就是锁定对象的颗粒度很小,也是目前各大数据库管理软件所实现的锁定颗粒度最小的。由于锁定颗粒度很小,所以发生锁定资源争用的概率也最小,能够给予应用程序尽可能转载 2014-12-21 01:04:42 · 794 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之影响 MySQL Server 性能的相关因素
1. 商业需求对性能的影响这里我们就拿一个看上去很简单的功能来分析一下。需求:一个论坛帖子总量的统计附加要求:实时更新在很多人看来,这个功能非常容易实现,不就是执行一条SELECT COUNT(*)的Query 就可以得到结果了么?是的,确实只需要如此简单的一个Query 就可以得到结果。但是,如果我们采用不是MyISAM 存储引擎,而是使用的Innodb 的存储引擎,那么大家可以转载 2014-12-20 19:18:31 · 2415 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之MySQL Query Optimizer基本工作原理
在MySQL中有一个专门负责优化SELECT 语句的优化器模块,这就是我们本节将要重点分析的MySQL Optimizer,其主要的功能就是通过计算分析系统中收集的各种统计信息,为客户端请求的Query给出他认为最优的执行计划,也就是他认为最优的数据检索方式。当MySQLOptimizer 接收到从Query Parser (解析器)送过来的Query 之后,会根据MySQL Query转载 2015-01-18 17:48:18 · 1250 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之Query语句优化基本思路和原则
在分析如何优化MySQLQuery 之前,我们需要先了解一下Query 语句优化的基本思路和原则。一般来说,Query 语句的优化思路和原则主要提现在以下几个方面: 1. 优化更需要优化的Query; 2. 定位优化对象的性能瓶颈; 3. 明确的优化目标; 4. 从Explain入手; 5. 多使用pro转载 2015-01-18 17:55:28 · 1125 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之充分利用 Explain和Profiling
1.1. Explain 的使用 我们先看一下在MySQL Explain 功能中给我们展示的各种信息的解释: ◆ ID:MySQL Query Optimizer选定的执行计划中查询的序列号。表示查询中执行select子句或操作表的顺序,id值越大优先级越高,越先被执行。id相同,执行顺序由上至下。 ◆ Select_type:所使用的查询类型,主要有以下这几种查询转载 2015-01-18 18:08:23 · 1917 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之ORDER BY,GROUP BY 和DI STI NCT 优化
1.1. ORDER BY 的实现与优化 在MySQL 中,ORDER BY 的实现有如下两种类型: ◆ 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端要求的有序数据返回给客户端; ◆ 另外一种则需要通过MySQL 的排序算法将存储引擎中返回的数据进行排序然后再将排序后的数据返回给客户端。转载 2015-01-18 18:51:31 · 3317 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之合理设计并利用索引
在MySQL 中,主要有四种类型的索引,分别为:B-Tree 索引,Hash 索引,Fulltext 索引和RTree索引,下面针对这四种索引的基本实现方式及存储结构做一个大概的分析。 B-Tree 索引 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:转载 2015-01-18 18:19:59 · 921 阅读 · 0 评论 -
读《MySQL性能调优与架构设计》笔记之Join 的实现原理及优化思路
Join 的实现原理在MySQL中,只有一种Join 算法,就是大名鼎鼎的Nested Loop Join,Nested Loop Join实际上就是通过驱动表的结果集作为循环基础数据,然后一条一条的通过该结果集中的数据作为过滤条件到下一个表中查询数据,然后合并结果。如果还有第三个参与Join,则再通过前两个表的Join结果集作为循环基础数据,再一次通过循环查询条件到第三个表中查询数据,如此往转载 2015-01-18 18:39:23 · 2936 阅读 · 0 评论 -
MySQL Cluster数据分布/分区,两阶段提交协议及事务资源
数据分布MySQL Cluster自动分区数据表(也可能使用用户自定义分区),将数据分布到分区中.一个数据表被划分到多个Data Node分区中,数据在分区中被”striped”主键的hashing决定哪个分区拥有数据(自动分布)对主键的一部分进行hashing也是可能的(适合sharding和数据局部性)分区和数据分布如果有两个数据节点(DATA NODE 1和D转载 2013-10-07 10:51:29 · 2168 阅读 · 0 评论