数据库
暮光巨魔
这个作者很懒,什么都没留下…
展开
-
常见分布式唯一ID生成方案
分布式id要求全局唯一高性能,高可用,低延时,否则可能会成为系统瓶颈好接入,拿来即用的原则尽量满足趋势递增生成方式UUID数据库自增id数据库多主模式号段模式redis雪花算法(SnowFlake)滴滴出品(TinyID)百度(Uidgenerator)美团(leaf)...原创 2020-11-10 21:49:18 · 201 阅读 · 0 评论 -
常见分布式事务解决方案
常见分布式事务解决方案前提mysql的锁机制,行锁,表锁,间隙锁。行锁仅对有索引的查询才生效,是作用在索引上的,锁住的是数据记录。表锁是针对没有索引的字段查询时,会加表锁,或者dba在操作数据库表时会加表锁,表锁锁住的也是数据记录。间隙锁是mysql为了解决RR(可重复读)隔离级别下,当前读的幻读问题,间隙锁不锁数据记录,它锁住的是数据之间的间隙(B+树叶子节点页内数据之间的间隙)mysql的当前读和快照读,所有当前读都会加行锁,常见当前读有selece for update、update、d原创 2020-11-01 20:14:28 · 123 阅读 · 0 评论 -
mysql分库分表
mysql分库分表用户表拆分水平分表用户表索引字段 用户uid 手机号水平分为128张表,分片键为用户id,采用hash取模方式,id mod 128, 128张表可以在一个库里,也可以在比如4个库里,每个库32张表。查询时,用户id直接mod 128就知道去查那张表,如果用户表比如有手机号索引字段,那么根据手机号怎么查询用户信息呢,这就需要建立手机号和用户id映射表,同时映射表也需要分表,采用手机号作为分片键,查询先根据手机号查到用户id,在根据id去查询用户信息。整体采用空间换时间的思想原创 2020-10-31 12:21:29 · 453 阅读 · 0 评论 -
InnoDB 存储引擎浅析
InnoDB 存储引擎浅析InnoDB 主要分为两大块:InnoDB内存架构 (InnoDB In-Memory Structures)InnoDB磁盘架构 (InnoDB On-Disk Structures)InnoDB 内存架构Buffer Pool当我们执行dml语句时,mysql不会直接去修改磁盘数据,因为这样做太慢了,mysq会先改内存,然后记录redolog和binlog(redolog和binlog采用两阶段提交机制,确保binlog写入完整性进而保证主从架构的从库数据原创 2020-10-28 13:20:03 · 90 阅读 · 0 评论 -
分布式数据库之数据分区
分布式数据库之数据分区顺序分布比如:1-100个数字,要保存到3个节点上,每个节点平均存储,1-33存储在第1个节点,34-66存储到2节点,剩余存储到3节点。顺序存储常用在关系型存储上hash分布节点取余分区比如100个数据,对每个数据进行hash运算之后,再于节点数进行取余运算,根据余数保存在不同节点上。缺点:当节点扩容或缩容时需要迁移的数据量较大一致性hash分区将所有0-2的32次方的所有数据进行hash运算,结果组成一个hash环,对数据进行hash找到在环上的位置,顺时针方原创 2020-08-25 17:44:34 · 529 阅读 · 0 评论 -
redis集群三种解决方案
redis 主从redis sentinelsentinel模式是建立在主从模式的基础上,解决了主从模式下master挂掉后,不会自动故障转移的缺点,当master节点挂了以后,sentinel会在slave中选择一个做为master,并修改它们的配置文件,其他slave的配置文件也会被修改,比如slaveof属性会指向新的master,当master节点重新启动后,它将不再是master而是做为slave接收新的master节点的同步数据。sentinel因为也是一个进程有挂掉的可能,所以s原创 2020-06-01 22:44:56 · 232 阅读 · 0 评论 -
sql优化系列之explain执行计划
关于explain执行计划,这些知识点,你不得不知道,否则你怎么敢说你做过sql调优呢???explain 用处当explain和sql一起使用时,mysql会显示来自优化器关于sql执行的信息。也就是说,mysql会解释它将如何处理该sql语句,包括是否会使用索引,可能使用到的索引,以及最终使用的索引,表链接及顺序等等。所以学会查看explain执行计划非常重要。explain所有字段总的来说,explain包含如下字段:id、select_type、table、partitions、type、p原创 2020-05-31 21:47:20 · 214 阅读 · 0 评论 -
项目中为什么要使用redis
你的项目中为什么要使用redis呢,相信主要是从性能和并发考虑。优点1.纯内存操作2.单线程操作,避免了频繁的上下文切换3.采用了非阻塞I\O多路复用机制对于变动较少的数据,或者查询时间比较长的数据,我们可以将查询结果缓存到redis,这样请求就能够迅速响应。特别是秒杀系统,在这种高并发情况下,可以有效缓解数据库压力。常见问题1.缓存和数据库数据一致性问题2.缓存雪崩问题3.缓存...原创 2020-03-19 21:18:29 · 2108 阅读 · 0 评论 -
sql执行过程
sql执行过程一个sql语句是如何执行的?从mysql服务架构说起。mysql内部大致分为服务层和存储引擎层两部分服务层:包含连接器、查询缓存、分析器、优化器、执行器等。涵盖mysql的大多数核心服务功能及所有内置函数(如日期、时间、数据和加密等)所有跨存储引擎的功能都将在这一层实现,比如存储过程、触发器、视图、函数等,也包括通用的binlog日志模块。存储引擎层:包含数据的存储和...原创 2020-03-06 23:01:57 · 228 阅读 · 0 评论 -
mysql索引
mysl索引分类B+树索引、Hash索引、全文索引是mysql数据库中的三类索引,今天着重学习最常用到的innodb存储引擎中的b+树索引。基础知识,首先你需要了解二叉查找树,平衡二叉树和B树这三种数据结构。二叉查找树特点:任何节点的左子节点的键值都小于当前节点,右子节点的键值都大于当前节点。平衡二叉树在二叉查找树的基础上保持树的平衡,特点每个节点的左右子树的高度差不能超过...原创 2019-11-09 22:25:38 · 102 阅读 · 0 评论 -
mysql单表记录和优化
mysql单表最大记录数其实mysql本身并没有对单表最大记录数进行限制,但是从性能考虑,肯定是有影响的。曾广为流传的一个说法:mysql单表数据量超过2000万行,性能会明显下降,当年的百度DBA测试mysql性能时发现,当单表数据量在2000万行量级的时候,SQL操作性能急剧下降,因此结论由此而来。阿里巴巴《java开发手册》提出单表行数超过500万行或者单表容量超过2GB,才推荐进行分...原创 2019-09-15 08:42:12 · 205 阅读 · 0 评论 -
Redis持久化
1、RDB持久化:在指定的时间间隔对你的数据进行快照存储。2、AOF持久化:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。(AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大)...原创 2019-08-26 19:13:38 · 95 阅读 · 0 评论 -
简述mysql数据库引擎Innodb和Myisam区别
innodb 支持事务, myisam 不支持事务innodb 支持外键, myisam 不支持外键innodb 支持行级锁, myisam 支持表级锁myisam 保存了表的总行数count(*), innodb没有保存,需要扫描全表查询...原创 2019-08-26 19:06:54 · 846 阅读 · 0 评论 -
MYSQL数据库主从配置
MYSQL数据库主从配置原创 2019-08-06 18:33:54 · 84 阅读 · 0 评论 -
MYSQL数据库备份和导入
MYSQL数据库备份和导入备份数据mysqldump -u用户名 -p密码 数据库名 > 111.sql导入数据mysql -u用户名 -p密码 数据库名 < 111.sql原创 2019-08-06 15:35:07 · 1258 阅读 · 2 评论