![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 91
qq_39093474
这个作者很懒,什么都没留下…
展开
-
ShardingSphere-Sharding-Proxy
Sharding-Proxy是ShardingSphere的第二个产品,定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。目前先提供MySQL版本,它可以使用任何兼容MySQL协议的访问客户端(如:MySQL Command Client, MySQL Workbench等操作数据,对DBA更加友好。向应用程序完全透明,可直接当做MySQL使用适用于任何兼容MySQL协议的客户端。翻译 2024-05-14 00:14:10 · 299 阅读 · 0 评论 -
ShardingSphere-广播表
广播表指所有的分片数据源中都存在的表,表结构及其数据在每个数据库中均完全一致。适用于数据量不大且需要与海量数据的表进行关联查询的场景,例如:字典表。插入、更新操作会实时在所有节点上执行,保持各个分片的数据一致性查询操作,只从一个节点获取可以跟任何一个表进行 JOIN 操作。翻译 2024-05-12 12:46:20 · 147 阅读 · 0 评论 -
ShardingSphere-多表关联
例如:t_order 表和 t_order_item 表,均按照 order_no分片,并且使用 order_no进行关联,则此两张表互为绑定表关系。server-order0的db_order上有t_order0、t_order1、t_order_item0、t_order_ item1。server-order1的db_order上有t_order0、t_order1、t_order_item0、t_order_ item1。order表、order_item表的分片规则是一样的。翻译 2024-05-11 22:56:49 · 171 阅读 · 0 评论 -
ShardingSphere-mysql水平分片
当单表记录达到500万条或磁盘空间占用达2GB时需要考虑水平分表。水平分表是按行切分为多个表,若放在同一个服务器里能够满足性能要求就不用分库。若不能满足要求就要分库了,将表放在不同的服务器上。翻译 2024-05-09 20:29:15 · 81 阅读 · 0 评论 -
ShardingSphere-mysql 垂直分库
垂直分库,将业务上不相关,即不需要join操作的表划分到不同的库。翻译 2024-04-11 22:11:23 · 48 阅读 · 0 评论 -
ShardingSphere-ShardingSphere读写分离和数据脱敏
读写分离虽然可以提升系统的吞吐量和可用性,但同时也带来了数据不一致的问题,包括多个主库之间的数据一致性,以及主库与从库之间的数据一致性的问题。水平分片和读写分离联合使用,能够更加有效的提升系统性能, 下图展现了将分库分表与读写分离一同使用时,应用程序与数据库集群之间的复杂拓扑关系。在数据量不是很多的情况下,我们可以将数据库进行读写分离,以应对高并发的需求,通过水平扩展从库,来缓解查询的压力。读写分离是通过主从的配置方式,将查询请求均匀的分散到多个数据副本,进一步的提升系统的处理能力。原创 2024-04-09 21:45:42 · 869 阅读 · 0 评论 -
ShardingSphere-ShardingSphere基本介绍及核心概念
分布式数据库中间件(Distributed Database Middleware,检测DDM),是一款分布式关系型数据库,采用先进的存储计算分离架构,实现并发,计算,数据存储三个方面均可线性扩展,专注于解决数据库分布式扩展问题,突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访问,其核心的优势是提供数据库水平扩展能力。翻译 2024-03-31 22:39:16 · 2884 阅读 · 0 评论 -
面试相关:如何保证缓存和数据库的一致性问题?
最近面试季节,估计如何保证缓存和数据库一致性这个问题经常会被问到,这是一个老生常谈的话题了。到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库?为什么要引入消息队列保证一致性?延迟双删会有什么问题?到底要不要用?这篇文章,我们就来把这些问题讲清楚。这篇文章干货很多,希望你可以耐心读完。好了,总结一下这篇文章的重点。想要提高应用的性能,可以引入缓存来解决更新数据库 + 更新缓存、更新数据库 + 删除缓存更新数据库 + 更新缓存方案,在并发。...翻译 2022-08-27 22:37:46 · 228 阅读 · 0 评论 -
实践应用:先更新数据库还是先更新缓存?
在大型系统中,为了减少数据库压力通常会引入缓存机制,一旦引入缓存又很容易造成缓存和数据库数据不一致,导致用户看到的是旧数据。为了减少数据不一致的情况,更新缓存和数据库的机制显得尤为重要,接下来带领大家踩踩坑。学了这么多,相信大家对缓存更新的策略都已经有了清晰的认识。最后稍稍总结一下。通常会先更新数据库,然后再删除缓存,为了兜底通常还会将数据设置缓存时间。一般是由一个对外提供读写操作,应用程序不用感知操作的是缓存还是数据库。简单理解就是延迟写入,每隔一段时间会批量输入数据库,优点是应用程序写入速度非常快。..翻译 2022-08-25 23:25:38 · 454 阅读 · 0 评论 -
如何实现丝滑的数据库扩容
今天这篇文章来聊一聊数据库扩容相关的话题,这不仅是实际项目中可能会面临的问题,也是面试时常问的话题,希望看完能对彼此有所启发,能提供一些思路。翻译 2022-08-23 23:44:21 · 215 阅读 · 0 评论 -
实践应用:SQL优化的几个角度
大家都在写SQL,但是不同人写出的SQL执行效率却各有不同,这里面的门道也是所有后端开发者的必修课。所以,在开始之前(MySQL优化),咱们先来聊聊性能优化的一些原则。翻译 2022-08-18 22:32:40 · 112 阅读 · 0 评论 -
实践应用:数据库、数据表设计规范例析
代码】实践应用:数据库、数据表设计规范例析。翻译 2022-08-17 23:58:13 · 130 阅读 · 0 评论 -
原理探究:为什么大公司后台数据库都要搞分库分表?
在技术设施方面,还是不得不佩服大公司的投入,阿里给工程师提供的数据查询后台,其实是一个逻辑库,你可以用查询单表的方式去查询分库分表,后台会调用数据库配置平台的配置,自动计算库表路由,人性化的很。方式,支撑配送所有业务,到百万级别单量。我之前遇到的很多情况,总是先分表,解决单表的容量和读写性能问题,随着业务发展,单库页遇到了瓶颈了在考虑分库。我不知道其他公司,呆过的某一家公司的数据查询后台是纯天然的,不带任何修饰的,想要。,其实除了这几种方式,还见过不少变种,但都是结合本公司,本业务的特性进行的改良。...翻译 2022-08-17 23:11:02 · 384 阅读 · 0 评论 -
原理探究:MySQL主从复制那些事儿
我们在平时工作中,使用最多的数据库就是MySQL了,随着业务的增加,如果单单靠一台服务器的话,负载过重,就容易造成宕机。这样我们保存在MySQL数据库的数据就会丢失,那么该怎么解决呢?其实在MySQL本身就自带有一个主从复制的功能,可以帮助我们实现负载均衡和读写分离。对于主服务器(Master)来说,主要负责写,从服务器(Slave)主要负责读,这样的话,就会大大减轻压力,从而提高效率。随着业务的增长,一台数据服务器已经满足不了需求了,负载过重。这个时候就需要减压了,实现负载均衡读写分离,一主一丛。...翻译 2022-08-14 15:48:05 · 110 阅读 · 0 评论 -
为什么 MySQL索引要用 B+tree
当你在遇到了一条慢SQL需要进行优化时,你第一时间能想到的优化手段是什么?大部分人第一反应可能都是添加索引,在大多数情况下,索引能够将一条SQL语句的查询效率提高几个数量级。索引的本质:一种用于快速查找记录的数据结构。索引的常用数据结构二叉树红黑树Hash表B-tree(B树,并不叫什么B减树😁)B+tree数据结构图形化网址:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html单个节点存储越多的元素,自然在整个过程中的磁盘。...翻译 2022-08-13 22:24:15 · 329 阅读 · 0 评论 -
阿里二面: 详解一条 SQL 的执行过程
天天和数据库打交道,一天能写上几十条SQL语句,但你知道我们的系统是如何和数据库交互的吗?MySQL如何帮我们存储数据、又是如何帮我们管理事务?…是不是感觉真的除了写几个外基本脑子一片空白?这篇文章就将带你走进MySQL的世界,让你彻底了解系统到底是如何和MySQL交互的,MySQL在接受到我们发送的SQL语句时又分别做了哪些事情。MySQL提交事务的时候,会将中的数据写入到redo日志文件中 刷磁盘可以通过参数来设置值为0。...翻译 2022-08-10 22:08:59 · 125 阅读 · 6 评论 -
细说MySQL中磁盘与CPU的交互——神秘的Buffer Pool
对于使用作为存储引擎的表来说,不管是用于存储用户数据的索引(包括聚集索引和非聚集索引),还是各种系统数据,都是以页的形式存放在磁盘上,而与内存的交互远远快于与磁盘的交互,所以存储引擎在处理客户端的请求时,如果需要访问某个页的数据,就会把完整的页中的数据全部加载到内存中,也就是说,即使我们只需要访问一个页中的一条记录,也需要先把整个页的数据加载到内存中。将整个页中的数据加载到内存中,就可以进行读写访问了,在进行读写访问之后并不着急把该页对应的内存空间释放掉,而是将其缓存起来,这样下次有请求再次访问该页面时,就翻译 2022-07-05 15:00:59 · 321 阅读 · 0 评论 -
MySQL中count是怎样执行的?———count(1),count(id),count(非索引列),count(二级索引列)的分析
相信在此之前,很多人都只是记忆,没去理解,只直到,包括了所有行,在统计结果的时候,不会忽悠列值为的记录。只会统计列名那一列,在统计结果的时候,会忽略列值为的记录下面就从原理上给大家分析一下。和前面一样,用的同一个表,表中有将近条数据3. count是怎么样执行的?经常会看到这样的例子:当你需要统计表中有多少条数据的时候,会经常使用如下语句由于聚集索引和非聚集索引中的记录是一一对应的,而非聚集索引记录中的包含的列(索引列+主键)是少于聚集索引(所有列)记录的。所以同样数量的非聚集索引记录比聚集索引记录翻译 2022-07-02 21:37:30 · 530 阅读 · 0 评论 -
数据库优化——慢查询MySQL定位优化流程
一般有3个思考方向先给出步骤,后面再详细说明,有3个步骤首先开启慢查询日志,由参数决定是否开启,在命令行下输入下面的命令:默认环境下,慢查询日志是关闭的,所以这里要开启。只要你的实际执行时间超过了这个阈值,就会被记录到慢查询日志里面。这个阈值默认是,线上业务一般建议把设置为,如果某个业务的要求比较高的,可设置慢查询为。发现慢查询及时优化或者提醒开发改写。一般测试环境建议设置的阀值比生产环境的小,比如生产环境是,则测试环境建议配置成。便于在测试环境及时发现一些效率的。甚至某些重要业务测试环境可以设置为,以翻译 2022-06-29 16:25:24 · 648 阅读 · 0 评论 -
面试之前,MySQL表连接必须过关!——表连接的原理
表数据如下表数据如下我们知道,所谓表连接就是把各个表中的记录都取出来进行一次匹配,最后把匹配组合好的记录一起发送给客户端。比如下面把表和表连接起来的过程如下图什么是连接查询?比如上面的t1和t2表的记录连接起来组成一个新的更大的记录,这个查询过程就被称为连接查询。什么是笛卡尔积?如果连接查询的结果集中包含一个表中的每一条记录与另一个表中的每一条记录相互匹配组合的记录,那么这样的结果集就可以称为笛卡尔积。表中有条记录,表中也有条记录,两个表连接后的笛卡尔积就有条记录,只要把两个表的记录数相乘翻译 2022-06-30 22:24:54 · 830 阅读 · 1 评论 -
MySQL查询为什么选择使用这个索引?——基于MySQL 8.0.22索引成本计算
我们知道,查询会选择成本最低,或代价最低的那种方式去真正的执行查询。的查询成本分为下面两个部分I/O成本我们的表经常使用的,存储引擎都是将数据和索引存储到磁盘上,当查询表中的记录时,需要先把数据或者索引加载到内存中,然后再进行操作,这个从磁盘到内存的加载过程损耗的时间称为成本。CPU成本读取以及检测记录是否满足对应的搜索条件,对结果集进行排序等这些操作损耗的时间称为成本。对于引擎来说,页是磁盘和内存之间交互的基本单位,规定:读取一个页面花费的成本默认是,读取以及检测一条记录是否符合搜索条件的成本默认是(翻译 2022-06-23 13:54:06 · 326 阅读 · 0 评论 -
要想通过面试,MySQL的Limit子句底层原理你不可不知
还是这张表,表里我创建了近条数据列是主键,和列是二级索引列,是唯一索引,是联合索引()。分析一下sql执行计划在二级索引中,列是有序的,查找按列排序的第条记录,只需要从中获取到第一条二级索引记录,然后直接回表取得完整的记录即可,这个很容易理解。如果我们把上边语句的换成,则却需要进行全表扫描,并进行,执行计划如下:有的同学就很不理解了:也可以使用二级索引呀,我们可以先扫描到第条二级索引记录,对第条二级索引记录进行回表操作就好了啊。由于实现缺陷,不会出现上述的理想情况,它只会全表扫描+,下边我们分析一翻译 2022-06-10 09:53:42 · 211 阅读 · 0 评论 -
MySQL中B+树索引的应用场景大全
本篇是讲树的应用场景,也就是我们平时在写语句时需要思考的问题,这里重点总结一下首先列出建表语句,后面例子均在此表基础上举例说明。在这里你需要观察到的是哪些列加了索引就可以。如果我们的搜素条件中的列和索引列对应的话(列的字段和个数要相同),这种情况就称为全值匹配。可以想象一下查询过程有的同学可能有个疑问?子句中几个搜索条件的顺序对查询结果有啥影响嘛?也就是说我们调换这几个搜索列的顺序对查询的执行过程有啥影响嘛?比方说写成下边这样答案是没有影响,只要你把联合索引的每个索引都用到了,随意更换顺序是没有影响的翻译 2022-06-11 13:39:24 · 769 阅读 · 0 评论 -
博文看了这么多,终于理解了MySQL索引
使用索引避免全表扫描,提高检索效率,使用索引后就维护一个树,树是为磁盘或者其他直接存取辅助设备设计得一种平衡查找树,在树中,所有记录节点都是按键值得大小顺序存放在同一层的叶子节点,各叶子节点通过指针进行连接(这里我默认大家最最基本的数据结构知识都会)。先给出最简单一张图示意理解一下,但是这图是不全对,对于新手来说,可以用这张图理解概念,后面会说明非叶子结点存放的就是目录,根据目录去二分查找叶子结点中的记录,所有记录都在叶子结点上,并且是顺序存放的,如果查找的值小于,那么就从前指针指向的叶子里去查找记录,如翻译 2022-06-28 15:26:03 · 78 阅读 · 0 评论 -
MySQL索引——入门进阶必备
你一定看到过这样的例子,当有个字我们不认识你要去查字典,不可能从第一页翻到最后一页去查找,你会先查找拼音或者偏旁部首,然后直接跳转到对应的页小范围的一条一条查找,这样会快得多。索引也是类似,建立索引就是按照某种规则建立一颗树,在树查询到符合要求的记录就类似于查询到拼音或者偏旁部首一样,最后回表就能很快的查找到完整具体的记录,在这里,我会带大家来看看记录的插入是如何变化的,记录原理是什么。假设数据表是这样的:你插入的每条记录的行格式,我们将其简化为如下所以,你插入记录后,结构应该是这样的。我们假设每个数据翻译 2022-06-09 11:03:43 · 237 阅读 · 0 评论 -
数据库MySQL入门-下
锁是为了保证数据库中数据一致性,使各种 共享资源在被访问时变得有序而设计的一种规则。中不同的存储引擎支持不同的锁机制,支持行锁,有时也会升级为表锁,只支持表锁。InnoDB的锁类型主要有读锁(共享锁),写锁(排它锁),意向锁和MDL锁。读锁(共享锁,)简称锁,一个事务获取了一个数据行的读锁,其他事务也能获得该行对应的读锁,但不能获得写锁,即一个事务在读取一个数据行时,其他事务也可以读,但是不能对该数据行进行增删改得操作。简而言之:就是可以多个事务读,但只能一个事务写。读锁是通过语句给被读取得行记录或行记录得翻译 2022-07-11 22:57:46 · 483 阅读 · 0 评论 -
数据库MySQL入门-上
第1章 数据库1.1 数据库概述什么是数据库?数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。什么是数据库管理系统?数据库管理系统(DataBase Management System,DBMS ):是一种操作和管理数据库的大型软件,用于建立,使用和维护数据库。对数据库进行统一的管理和控制。以保证数据库的安全性和完整性。用户可有通过数据库管理系统访问数据库中表内的数据。常见的数据库管理系统:MYSQL翻译 2022-05-31 13:29:30 · 1400 阅读 · 0 评论