数据库必看--WYL篇

一.MySQL最常用数据库
想到mysql,就需要怎么解决数据库高并发问题。
1.使用索引
2.使用缓存
3.使用集群
4.分库分表

(1.)索引(查询)

分类:BTree索引和哈希索引
哈希索引我们比较常用,它在绝大多数使用在为单条记录查询(查询性能快),其余 就是选择BTree索引。

(2.)缓存

    Redis 项目 使用:数据字典
    数据类型:List Spring hash set zset
    雪崩:大量数据堆积给数据库(错开缓存时间)
    击穿:因为缓存没有数据就增加了数据库压力(设置一个没有用的值)

(3. )集群

       反向代理负载均衡(Nginx)
       IP层负载均衡
       数据链路层负载均衡

(4.)分库分表

       分库:优点数据库拆分比较简单,尤其适合没有跨库查询

MySQL的存储引擎
MyISMQ InnoDB

事务

关系性数据库ACID规则
1.原子性:要么完成要么不完成。
2.一致性:执行事务前后,数据保持一致。
3.隔离性:各干各的,互不干扰。
4.持久性:数据库的数据是持久的,出现了故障也不影响数据的改变。

事务的隔离级别

1.脏读:一个事务读取了另一个事事务未提交的事务
2.不可重复读:在一次事务范围内,读取同一数据产生了不同的值。
3.虚读:读取整体的数据后。因为其他事务对数据的更新,再次查询结果不同。

MyISAM采用表级锁
InnoDB支持行级锁
表级锁:粒度最大 的一种锁,触发锁冲突的概率最高,并发度最低,MyISAM和 InnoDB引擎都支持表级锁。
行级锁:粒度最小 的一种锁,其加锁粒度最小,并发度高,但加锁的开销也最大,加锁慢,会出现死锁。

数据库分片的两种常见方案

客户端代理: 分片逻辑在应用端,封装在jar包中,通过修改或者封装JDBC层来实现。 当当网的 Sharding-JDBC 、阿里的TDDL是两种比较常用的实现。

中间件代理: 在应用和数据中间加了一个代理层。分片逻辑统一维护在中间件服务中。 我们现在谈的 Mycat、360的Atlas、网易的DDB等等都是这种架构的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值