mysql 写多读少_数据库写多读少和读多写少会怎么处理?

关于数据库的使用方式,我来分享下自己这几年使用数据库的四个阶段和一些杂谈!

1,简单的一个数据库事例:没有复杂的结构,只需要简单的连接信息,就可以使用数据库,这个时候,读写数据的性能优化,主要如下:

①,使用show status查看数据库事务计数,慢查询,锁和锁的时间分布,以及警告信息等,根据这些信息进行优化!

②,优化SQL:主要是排序,where句等尽量使用索引列,少用like语句,避免使用函数作为查询条件等等!(百度一大把)

&&:索引那么好用,是不是可以每个列都建索引?你不怕变残你就这么用。。。

索引是一种以空间换时间的用法,比如存100万条数据,一条数据为10k,需要在硬盘维护一个G的数据,而硬盘的顺序查询因为涉及到磁盘指针,速度相对来说很慢,而id列为0.01k,如果对id建索引,那么总的需要维护的数据仅仅为1M,然后id索引在记录所对应的数据的物理地址,则速度差不多提升了1000倍!

但是索引不适合多列,因为每个字段的索引都会额外的占用一份硬盘空间,如果全部字段都加索引,则占用了原来两倍多的空间,而且在写操作的时候需要更新索引,有额外的开销!

2,一主多从,读写分离:

一主多从:使用mysql的配置文件搭建一个主从结构,主库用来写数据,从库同步数据供读取,可满足毫秒级别的同步延迟!

读写分离实现:

①,代码实现:利用注解,将主从库分离,分别注解到读写数据的接口上,实现读写分离,但是实现困难,代码耦合度较高,扩展性低!

②,使用中间件:用过的DBProxy,通过简单配置可以实现读写分离,只需要简单配置,和使用mysql一样简单!

133052604_1_20180515081509832

3,双主互备:防止单点主库宕机,引起写数据出现问题,采取双主互备模式,其实跟主从相比就是反过来再做了一遍主从!都为主,都为从的意思!

133052604_2_20180515081510207

4,分库分表:数据库数据量过大的时候,单库甚至读写分离都已经成为高并发的瓶颈,这个时候采取一定的策略将数据分布在不同的数据库上是最好的选择,比如搭建8库128表,能充分利用多台数据库对于并发有很大提升!

133052604_3_20180515081510347

通常使用成熟的中间件比如mycat,sharsding-jdbc等等!

不过分库分表会对连接查询和统计功能等产生不便性!

总的来说,选用哪种方式是不确定的,只有在数据量达到一定的地步之后才应该考虑优化数据库架构,

读数据多,写数据少建议使用读写分离或者分库分表!

读数据少,写数据多建议用双主互备或者分库分表!

读写数据都多,建议分库分表!

当然,一个支持高并发的架构中,应该使用缓存等技术进一步释放数据库压力!以上是我的个人经验分享,更多的技术分享,敬请关注。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值