分布式系统集群的搭建 -- 存储篇

概述在网络层的背后,每一个业务都需要数据的支撑,数据库的优化在整个系统中就显得至关重要了虽然NoSQL在并发性能上要优于传统的DBA,但由于MySQL在扩展性等方面的优势,MySQL依然作为企业级数据存储的首选MySQL数据库内部缓存使用建立适当索引对于MySQL优化,最简单的做法就是建立索引,在表数据量较大时可以起到快速检索数据的...
摘要由CSDN通过智能技术生成

概述

在网络层的背后,每一个业务都需要数据的支撑,数据库的优化在整个系统中就显得至关重要了

虽然 NoSQL 在并发性能上要优于传统的 DBA,但由于 MySQL 在扩展性等方面的优势,MySQL 依然作为企业级数据存储的首选

 

 

MySQL 数据库内部缓存使用

 

建立适当索引

 

对于 MySQL 优化,最简单的做法就是建立索引,在表数据量较大时可以起到快速检索数据的作用

主要的成本在于其磁盘开销比较大,占用空间甚至可能比源数据更大,同时,由于需要维护和更新索引,所以 insert、update、delete 操作耗时会随之增加

对于主要以 select 操作为主的字段,合理建立索引对系统性能的提升是有明显作用的

 

 

数据库连接线程池缓存

 

MySQL 是一个多线程并发模型数据库,因此数据库的访问常常伴随着线程的创建和销毁,这个工作是非常耗时的

可以通过配置 thread_cache_size 选项来改变线程池的大小,减少线程的创建和销毁

 

 

还有另一种办法,那就是使用 pconnect(数据库长连接),线程一旦创建在很长时间内都保持着

但是,这样在数据库连接访问量大的时候会出现数据连接数耗尽的情况,因此,长连接的用法通常需要在CGI和MySQL之间实现一个“连接池”服务,控制CGI机器“盲目”创建连接数

 

建立数据库连接池服务,有很多实现的方式,PHP的话,可以使用swoole(PHP的一个网络通讯拓展)来实现

 

 

 

Innodb缓存设置(innodb_buffer_pool_size)

 

innodb_buffer_pool_size这是个用来保存索引和数据的内存缓存区,如果机器是MySQL独占的机器,一般推荐为机器物理内存的 80%

在取表数据的场景中,它可以减少磁盘IO

一般来说,这个值设置越大,cache命中率会越高

 

 

分库/分表/分区

 

MySQL 数据库表一般承受数据量在百万级别,再往上增长,各项性能将会出现大幅度下降

因此,当我们预见数据量会超过这个量级的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值