- 博客(348)
- 收藏
- 关注
原创 MySQL DB 集群管理平台--orchestrator
orchestrator采用go语言编写,它能够主动发现当前拓扑结构和主从复制状态,支持MySQL主从复制拓扑关系的调整、支持MySQL主库故障自动切换(failover)、手动主从切换(switchover)等功能。orchestrator后台依赖于MySQL存储元数据,能够提供Web界面展示MySQL集群的拓扑关系及实例状态,可以通过Web界面可更改MySQL实例的部分配置信息,同时也提供命令行和api接口,以便更加灵活的自动化运维管理。
2024-10-26 07:49:01 969
原创 Redis基础知识(学习笔记22--分布式锁 Redisson )
分布式锁是控制分布式系统间同步访问共享资源的一种方式,其可以保证共享资源在并发场景下的数据一致性。
2024-10-26 07:48:11 936
原创 Redis基础知识(学习笔记21--Lua 脚本语言2)
为了便于管理和复用,可以将元素单独定义为一个文件。该文件中仅可定义一个元表,且一般文件名与元表名称相同。若一个文件要使用其它文件中定义的元表,只需使用 require"元表文件名“ 即可将元表导入使用。如果用户想扩展该元表而又不想修改元表文件,则可在用户自己文件中重写其相应功能的元方法即可。
2024-10-25 23:45:53 971
原创 Redis基础知识(学习笔记21--Lua 脚本语言)
Lua 是一个由标准C语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚本语言,是于1993年由巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)的三人研究小组使用标准C语言开发。
2024-10-25 23:41:09 885
原创 Redis基础知识(学习笔记20--高并发场景)
对于某一个缓存,在高并发情况下若其访问量特别巨大,当该缓存的有效时间达到时,可能会出现大量的访问都要重建该缓存,即这些访问请求发现缓存中没有该数据,则立即到DBMS中进行查询,那么这就有可能会引发对DBMS的高并发查询,从而导致DBMS的崩溃。垂直的扩展,在百亿补贴,大促,秒杀场景下,相关sku会成为访问的热点,如果将相关sku存储到某个单一的分片则可能出现流量访问倾斜的问题,某个分片会承担大部分的流量出现性能变差甚至分片被打垮的情况;数据库来应对写的流量,缓存来应对读的流量,提高读的性能;
2024-10-25 23:38:26 718
原创 CAP 与 Raft 相关知识
client 发送写操作请求到达leader之前,leader就挂了,因为请求还没有到达集群,所以这个请求对于集群来说就没有存在过,对集群数据的一致性没有任何影响。follower在接收到来自leader的box后,首先会比较该box的term与本地的term,只要不比自己的term下,就接收该box,并向leader回复同意。leader 在接收到client的写操作请求后,就会将数据与自己的term封装为一个box,请随着下一次心跳发送给所有followers,以征求大家对该box的意见。
2024-10-24 23:18:00 829
原创 Redis基础知识(学习笔记19--Redis Sentinel)
当sentinel主观下线的节点是master时,该sentinel节点会向每个其它sentinel节点发送sentinel is-master-down-by-addr 命令,以询问其对master在线状态的判断结果。每个sentinel节点每秒就会向每个redis节点发送ping心跳检测,如果sentinel在down-after-milliseconds时间内没有收到某redis节点的回复,则sentinel节点就会对该redis节点做出“下线状态”的判断。然后启动sentinel即可。
2024-10-24 23:15:52 842
原创 Redis基础知识(学习笔记18--主从集群)
如果slave发送psync <原master_replid> <repl_offset> 命令,新的master能够识别出该slave要从原master复制数据,而自己的数据都是从该master复制来的。master会根据提交请求的slave地址,查找到保存在master中的复制偏移量,然后向slave回复FULLRESYNC <master_replid> <repl_offset>,以告知slave其马上要开始发送的位置。repl_offset表示当前slave已经完成复制的数据的offset。
2024-10-24 22:54:14 664
原创 Redis基础知识(学习笔记17--持久化 (3))
当bgrewriteaof在执行过程中也是先将rewrite计算的结果写入到了aof_rewrite_buf缓存中,然后当缓存中数据达到一定量后,就会调用fsync()进行刷盘操作,即数据同步,将数据写入到临时文件。该属性用于指定,当AOF fsync策略设置为always 或 everysec,当主进程创建了子进程正在执行bgsave或bgrewriteaof时,主进程是否不调用fsync()来做数据同步。如果调用了fsync(),在需要同步的数据量非常大时,会阻塞主进程对外提供服务,即会存在延迟问题。
2024-10-23 22:56:01 433
原创 Redis基础知识(学习笔记16--持久化 (2))
所谓rewrite其实就是对AOF文件进行重写整理。当rewrite开启后,主进程redis-server创建出一个子进程bgrewriteaof,由该子进程完成rewrite过程。其首先对现有aof文件进行rewrite计算,将计算结果写入到一个临时文件,写入完毕后,再rename该临时文件为原aof文件名,覆盖原有文件。
2024-10-23 22:55:11 768
原创 Redis基础知识(学习笔记14--发布/订阅)
假如某个(或某些) key 正处于 WATCH 命令的监视之下,且事务块中有和这个(或这些) key 相关的命令,那么 EXEC 命令只在这个(或这些) key 没有被其他命令所改动的情况下执行并生效,否则该事务被打断(abort)。说明:如果没有频道被指定,也即是,一个无参数的 UNSUBSCRIBE 调用被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订。注意, 这个命令返回的不是订阅模式的客户端的数量, 而是客户端订阅的所有模式的数量总和。取消事务,放弃执行事务块内的所有命令。
2024-10-23 22:51:22 739
原创 Redis基础知识(学习笔记13--BitMap、HyperLogLog 与 Geospatial的操作命令)
BitMap 是Redis 2.2.0 版本中引入的一种新的数据类型。该数据类型本质上就是一个仅包含0和1的二进制字符串。而其所有相关命令都是对这个字符串二进制位的操作。用于描述该字符串的属性有三个:key、offset、bitvalue。*** key:BitMap是Redis的key-value中的一种Value的数据类型,所以该Value一定有其对应的Key。*** offset:每个BitMap数据都是一个字符串,字符串中的每个字符都有其对应的索引,该索引从0开始计数。
2024-10-23 22:50:05 787
原创 Redis基础知识(学习笔记12--集合的底层实现原理)
ziplist,通常称为压缩列表,是一个经过特殊编码的用于存储字符串或整数的双向链表。其底层数据结构由三部分组成:head、entries 与 end,这三部分在内存上是连续存放的。对应ziplist,实现复杂,未来逆序遍历,每个entry中包含一个entry的长度,这样会导致在ziplist中修改或者插入时需要进行级联更新。在高并发的写常见下会极度降低redis的性能。为了实现更紧凑、更快的解析,更简单的实现,重写实现了ziplist,并命名为listPack。
2024-10-23 22:48:44 692
原创 Redis基础知识(学习笔记10--Redis命令(3))
社交平台、电商平台等各种需要用户注册登录的平台,会根据用户提供的资料与用户使用习惯,为每一个用户进行画像,即为每个用户进行定义很多可以反应该用户特征的标签,这些标签就可以使用sadd添加到该用户对应的集合中。如果命令执行成功,则返回被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员。Reids存储数据的Value可以是一个Set集合,且集合中的每一个元素均为String类型,Set与List非常相似,当不同之处是Set中的元素具有无序性与不可重复性,而List具有有序性与可重复性。
2024-10-23 22:47:22 863
原创 Redis基础知识(学习笔记9--Redis命令(2))
它们是blpop / brpop命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 blpop / brpop 命令阻塞,直到timeout超时或者发现可弹出元素为止。不过,该列表的底层实际是一个无头节点的双向列表,所以对列表表头与表尾的操作性能较高,但对中间元素的插入与删除的操作的性能相对较差。反之,返回一个含有两个元素的列表,第一个元素时被弹出元素所属的key,第二个元素时被弹出的元素的值。反之,返回一个含有两个元素的列表,第一个元素是被弹出的值,第二个是等待时长。
2024-10-23 22:46:27 724
原创 Redis基础知识(学习笔记8--Redis命令(1))
增量式迭代命令所使用的算法只保证在数据集的大小有界的情况下迭代才会停止,换句话说,如果被迭代数据集的大小不断地增长的话,增量式迭代命令可能永远也无法完成一次完整迭代,即当一个数据集不断地变大时,想要访问这个数据集种的所有元素就需要做更多的工作,能否结束一个迭代取决于用户执行迭代的速度是否比数据增长的速度更快。(3)否则,返回key的剩余生存时间。说明:如果当前数据库(源数据库)和给定的数据库(目标数据库)有相同名字的给定key,或者key不不存在于当前数据库,那么,move没有任何效果。
2024-10-23 22:43:24 658
原创 Redis基础知识(学习笔记7--关键参数配置说明)
明确了 启动方式,必须指定参数(文件)例如另外,也说明了内存配置时,用到的大小单位,且单位是大小不敏感的。
2024-10-23 22:42:18 885
原创 Redis基础知识(学习笔记6--线程IO模型)
Redis处理客户端请求所采用的处理结构,称为Redis的IO模型。不同版本的Redis采用的IO模型是不同的。Redis 3.0 及 以前的版本,Redis IO模型采用的是纯粹的单线程模型,即所有的客户端请求全部有一个线程处理。从Redis 4.0 版本开始,Redis 中就开始加入了多线程元素,处理客户端请求的仍是单线程模型,但对于一些比较耗时但有不影响客户端响应的操作,交由后台其它线程处理。例如,持久化、对AOF的rewrite、对失效连接的清理等。Redis 从6.0 版本开始,支持了多线程模型。
2024-10-23 22:11:06 410
原创 Linux RPM安装及查找下载(--推荐个软件仓库)
Linux 开发商先在固定的硬件平台与操作系统平台上面,将需要安装或升级的软件编译好,然后将这个软件的所有文件打包成一个特殊格式的文件,在这个软件文件内,还包含了预先侦测系统与相依软件的脚本,并提供记载该软件提供的所有文件信息。客户端取得这个软件后,只要透过特定的指令来安装,那么该软件文件就会依照内部的脚本来检查侦测安装环境,且在符合要求的条件下,会进一步开始安装,安装完成后,还会自动将该软件的信息写入到软件管理机制中,以便将来进行升级或移除等操作。而找到一个好的,能成功下载到的源至关重要的。
2024-10-23 22:06:40 784
原创 Redis基础知识(学习笔记5--Redis Cluster)
(1).Redis Cluster 是Reids 自己本身提供的Redis 集群方案。【此图来源于 https://www.bilibili.com/video/BV1Gs4y1Q7Ls?(2).Redis 是去中心化的,集群由多个redis节点组成,每个节点负责整个集群的一部分数据,每个节点负责的数据多少可能不一样。节点之间相互连接组成一个对能的集群,他们呢之间通过一个特殊的二进制协议交换集群信息。(3).Redis Cluster 将所有的数据划分为16384个槽位,每个节点负责其中一部分槽位。
2024-10-23 22:05:01 750
原创 Redis基础知识(学习笔记4--高并发问题)
(2)syschronized()是进程级别,那么应用多节点部署的时候,就可能在redis中重建不止一次,但是小概率事件.:多级缓存可以根据业务需求定制不同的缓存策略,如热点数据可以存储在更快速的缓存层,冷数据可以存储在较慢的缓存层。:多级缓存将数据存储在不同的缓存层中,用户可以优先访问较快的缓存层,大大提高了数据的访问速度。例如,先去访问程序进程的缓存,如果缓存中有,就不需要去访问Redis,性能比Redis还好。缓存击穿--Redis中没有对应的苏剧,数据库中有,大量的请求则直接打到物理DB上。
2024-10-22 21:50:36 290
原创 Redis基础知识(学习笔记2--分布式锁)
如果这两条指令可以一起执行就不会出现问题,也许你会想到用redis事务来解决,但在这里不行,因为expire是依赖setnx的执行结果,如果setnx没抢到锁,expire是不应该执行的。优化的思路,就是在释放锁的时候,判断下,是不是自己之前添加的锁。举例子:假如加锁的时间是30秒,过10秒检查一次,一旦加锁的业务没有执行完,就会进行一次续期,把锁的过期时间再次重置成30秒。但这也不是一个完美的方案,它只是相对安全一点,因为如果真的超时了,当前线程的逻辑没有执行完,其它线程的逻辑也会乘虚而入。
2024-10-22 21:48:47 665
原创 Redis基础知识(学习笔记1--五种基础数据结构)
如果想查看key的结构类型,执行下面的命令如果想查看key的存储类型,例如,我知道了key是zset类型,但是我想知道它的存储类型,是压缩列表(ziplist),还是跳跃列表(skiplist),可以执行下面的命令,进行查看。
2024-10-22 21:44:37 582
原创 MySQL 8.0 Reference Manual(读书笔记61节--Examining Server Thread (Process) Information(2))
In MySQL 8.0.26, incompatible【ˌɪnkəmˈpætəbl 不相容的,不兼容的,互斥的;The thread is doing a first phase to find all matching rows before updating them. This has to be done if the UPDATE is changing the index that is used to find the involved【ɪnˈvɑːlvd 参与;(评判或作决定的)准则;
2024-10-22 21:43:19 423
原创 MySQL 8.0 Reference Manual(读书笔记61节--Examining Server Thread (Process) Information(1))
To ascertain【ˌæsərˈteɪn 查明;弄清;】 what your MySQL server is doing, it can be helpful to examine【ɪɡˈzæmɪn 检查;审查;(仔细地)检验;调查;考察;考查;测验(某人);(尤指在法庭上)审问,查问;
2024-10-22 21:42:14 502
原创 MySQL 8.0 Reference Manual(读书笔记60节--Optimizing the MySQL Server 和 Measuring Performance)
Benchmark your application and database to find out where the bottlenecks are. After fixing one bottleneck (or by replacing it with a “dummy” module), you can proceed to identify the next bottleneck. Even if the overall【ˌoʊvərˈɔːl , ˈoʊvərɔːl 总体的;
2024-10-22 21:39:55 905
原创 MySQL 8.0 Reference Manual(读书笔记59节-- Buffering and Caching 和 Locking)
第一部分 Buffering and CachingMySQL uses several strategies that cache information in memory buffers to increase performance.1InnoDB Buffer Pool OptimizationInnoDB maintains a storage area called the buffer pool for caching data and indexes in memory. K
2024-10-22 21:33:10 447
原创 MySQL 8.0 Reference Manual(读书笔记59节--Controlling the Query Optimizer(3))
the thread that executes a statement to the named resource group temporarily (for the duration of the statement). It requires the RESOURCE_GROUP_ADMIN or RESOURCE_GROUP_USER privilege.QB_NAME hints can be used to make explicit【ɪkˈsplɪsɪt 明确的;
2024-10-22 21:31:18 727
原创 MySQL 8.0 Reference Manual(读书笔记59节--Controlling the Query Optimizer(2))
Subquery hints affect whether to use semijoin transformations and which semijoin strategies to permit, and, when semijoins are not used, whether to use subquery materialization or IN-to-EXISTS transformations【ˌtrænsfərˈmeɪʃənz (彻底的)变化,改观,转变,改革;(用于南非)民主改革;
2024-10-22 21:29:48 828
原创 MySQL 8.0 Reference Manual(读书笔记59节--Controlling the Query Optimizer(1))
The server maintains histogram【ˈhɪstəɡræm 直方图;(统计学的)直方图,矩形图;
2024-10-22 21:28:00 991
原创 MySQL 8.0 Reference Manual(读书笔记58节--Understanding the Query Execution Plan(2))
书接上回Rematerialize (X,...) is displayed in the EXPLAIN row for table T, where X is any lateral【ˈlætərəl 横向的;侧面的;向侧面移动的;
2024-10-22 21:26:04 651
原创 MySQL 8.0 Reference Manual(读书笔记58节--Understanding the Query Execution Plan(1))
Depending on the details of your tables, columns, indexes, and the conditions in your WHERE clause, the MySQL optimizer considers many techniques to efficiently perform the lookups involved in an SQL query. A query on a huge【hjuːdʒ 巨大的;非常成功的;极多的;走红的;程度高的;
2024-10-22 21:24:24 867
原创 MySQL 8.0 Reference Manual(读书笔记57节--Optimizing for InnoDB Tables)
InnoDB is the storage engine that MySQL customers typically use in production databases where reliability【rɪˌlaɪə'bɪləti 可靠性;】 and concurrency【并发;
2024-10-22 21:22:44 978
原创 MySQL 8.0 Reference Manual(读书笔记56节--Optimizing Database Structure)
推行,采用(规章制度);
2024-10-22 21:21:16 665
原创 名言小抄(八)--曾国藩
---看事情要高瞻远瞩,有全局意识,考虑长远,做事的时候要谨慎,着手细节,才能避免眼高手低的毛病。----无论是说话、做事,还是处事,都要给自己留有余地,任何事情都不是绝对的,真理往前一步也会变成缪误,话不要说死,给自己留有回旋的余地。----极度悲伤时尽量不说话,极度欢喜时,不要轻易许诺,狂喜之小做出的承诺,日后也往往失信,心情不好时不要争执,冲动容易出口伤人。----凡事要顺其自然,坦然面对,活在当下,不过度担忧未来还未发生的事,要心无杂念地做好眼前的事,不要去留恋和纠结发生过的事。
2024-10-21 23:38:17 592
原创 MySQL 8.0 Reference Manual(读书笔记55节--Optimization and Indexes(2))
indexes: DESC in an index definition is no longer ignored but causes storage of key values in descending order. Previously, indexes could be scanned in reverse order but at a performance penalty【ˈpenəlti 处罚;】. UTC values that are distinct【dɪˈstɪŋkt 不同的;
2024-10-21 23:37:02 1020
原创 MySQL 8.0 Reference Manual(读书笔记54节--Optimization and Indexes(1))
Although it can be tempting【ˈtemptɪŋ 诱人的;吸引人的;有吸引力的;
2024-10-21 23:35:04 685
原创 MySQL 8.0 Reference Manual(读书笔记53节--Optimizing SQL Statements)
(尤指飞机的)顶舱;生命统计的,生死统计的;生气勃勃的,充满生机的;致命的,生死攸关的;大致的,大概的(方向或地区);Querying statistics columns does not store or update statistics in the mysql.index_stats and mysql.table_stats dictionary tables under these circumstances【ˈsɜrkəmˌstænsəz , ˈsɜrkəmˌstænsɪz 环境;
2024-10-21 23:34:04 924
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人