MySQL 索引类型有哪些?说说悲观锁和乐观锁?Eureka和zookeeper都可以提供服务注册与发现的功能,请说说两个的区别?SpringBoot和SpringCloud的区别?

MySQL 索引类型有哪些?
主键索引
索引列中的值必须是唯一的,不允许有空值。
普通索引
MySQL 中基本索引类型,没有什么限制,允许在定义索引的列中插入重复值和空值。
唯一索引
索引列中的值必须是唯一的,但是允许为空值。
全文索引
只能在文本类型 CHAR,VARCHAR,TEXT 类型字段上创建全文索引。字段长度比较大时,如果创建普
通索引,在进行 like 模糊查询时效率比较低,这时可以创建全文索引。 MyISAM InnoDB 中都可以
使用全文索引。
空间索引
MySQL 5.7 之后的版本支持了空间索引,而且支持 OpenGIS 几何数据模型。 MySQL 在空间索引这
方面遵循 OpenGIS 几何数据模型规则。
前缀索引
在文本类型如 CHAR,VARCHAR,TEXT 类列上创建索引时,可以指定索引列的长度,但是数值类型不
能指定。 其他(按照索引列数量分类)
1. 单列索引
2. 组合索引
组合索引的使用,需要遵循 最左前缀匹配原则(最左匹配原则) 。一般情况下在条件允许的情
况下使用组合索引替代多个单列索引使用。
说说悲观锁和乐观锁?
悲观锁
说的是数据库被外界(包括本系统当前的其他事物以及来自外部系统的事务处理)修改保持着保守
态度,因此在整个数据修改过程中,将数据处于锁状态。悲观的实现往往是依靠数据库提供的锁机
制,也只有数据库层面提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统汇总实
现了加锁机制,也是没有办法保证系统不会修改数据。
在悲观锁的情况下,为了保证事务的隔离性,就需要一致性锁定读。读取数据时给加锁,其它事务
无法修改这些数据。修改删除数据时也要加锁,其它事务无法读取这些数据。
乐观锁
相对悲观锁而言,乐观锁机制采取了更加宽松的加锁机制。悲观锁大多数情况下依靠数据库的锁机
制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大量开销,特别是对长事
务而言,这样的开销往往无法承受。 而乐观锁机制在一定程度上解决了这个问题。乐观锁,大多是基于数据版本( Version )记录机制实
现。何谓数据版本?即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一般是通过
为数据库表增加一个 “version” 字段来实现。读取出数据时,将此版本号一同读出,之后更新时,对
此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果
提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
Eureka zookeeper 都可以提供服务注册与发现的功能,请 说说两个的区别?
Zookeeper 保证了 CP C :一致性, P :分区容错性), Eureka 保证了 AP A :高可用) 1. 当向注
册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接
down 掉不可用。也就是说,服务注册功能对高可用性要求比较高,但 zk 会出现这样一种情况,当
master 节点因为网络故障与其他节点失去联系时,剩余节点会重新选 leader 。问题在于,选取 leader 时间过长, 30 ~ 120s ,且选取期间 zk 集群都不可用,这样就会导致选取期间注册服务瘫痪。
在云部署的环境下,因网络问题使得 zk 集群失去 master 节点是较大概率会发生的事,虽然服务能够
恢复,但是漫长的选取时间导致的注册长期不可用是不能容忍的。
2.Eureka 保证了可用性, Eureka 各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余
的节点仍然可以提供注册和查询服务。而 Eureka 的客户端向某个 Eureka 注册或发现时发生连接失
败,则会自动切换到其他节点,只要有一台 Eureka 还在,就能保证注册服务可用,只是查到的信息
可能不是最新的。除此之外, Eureka 还有自我保护机制,如果在 15 分钟内超过 85% 的节点没有正常
的心跳,那么 Eureka 就认为客户端与注册中心发生了网络故障,此时会出现以下几种情况: ①、
Eureka 不在从注册列表中移除因为长时间没有收到心跳而应该过期的服务。 ②、 Eureka 仍然能够
接受新服务的注册和查询请求,但是不会被同步到其他节点上(即保证当前节点仍然可用) ③、当
网络稳定时,当前实例新的注册信息会被同步到其他节点。
因此, Eureka 可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像 Zookeeper 那样
使整个微服务瘫痪.
SpringBoot SpringCloud 的区别?
SpringBoot 专注于快速方便的开发单个个体微服务。
SpringCloud 是关注全局的微服务协调整理治理框架,它将 SpringBoot 开发的一个个单体微服务整
合并管理起来,
为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策
竞选、分布式会话等等集成服务
SpringBoot 可以离开 SpringCloud 独立使用开发项目, 但是 SpringCloud 离不开 SpringBoot ,属于
依赖的关系 .
SpringBoot 专注于快速、方便的开发单个微服务个体, SpringCloud 关注全局的服务治理框架。
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值