- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Web系统的缓存机制的建⽴和优化
Web系统的缓存机制的建⽴和优化
刚刚我们讲完了Web系统的外部⽹络环境,现在我们开始关注我们Web系统⾃⾝的性
能问题。我们的Web站点 着访问量的上升,会遇到很多的挑战,解决这些问题不仅
仅是扩容机器这么简单,建⽴和使⽤合适的缓存机制才是根本。
最开始,我们的Web系统架构可能是这样的,每个环节,都可能只有1台机器。
我们从最根本的数据存储开始看哈。
⼀、 MySQL数据库内部缓存使⽤
MySQL 的缓存机制,就从先从MySQL 内部开始,下⾯的内容将以最常见的InnoDB存
储引擎为主。
1. 建⽴恰当的索引
最简单的是建⽴索引,索引在表数据⽐较⼤的时候,起到快速检索数据的作⽤,但是
成本也是有的。⾸先,占⽤了⼀定的磁盘空间,其中组合索引最突出,使⽤需要谨
慎,它产⽣的索引甚⾄会⽐源数据更⼤。其次,建⽴索引之后的数据
insert/update/delete等操作,因为需要更新原来的索引,耗时会增加。当然,实际上我
们的系统从总体来说,是以select查询操作居多,因此,索引的使⽤仍然对系统性能有
⼤幅提升的作⽤。
2. 数据库连接线程池缓存
如果,每⼀个数据库操作请求都需要创建和销毁连接的话,对数据库来说,⽆疑也是
⼀种巨⼤的开销。为了减少这类型的开销,可以在MySQL 中配置thread_cache_size来
表⽰保留多少线程⽤于复⽤。线程不够的时候,再创建,空闲过多的时候,则销毁。
其实,还有更为激进⼀点的做法,使⽤pconnect (数据库长连接),线程⼀旦创建在
很长时间内都保持着。但是,在访问量⽐较⼤,机器⽐较多的情况下,这种⽤法很可
能会导致 数据库连接数耗尽” ,因为建⽴连接并不回收,最终达到数据库的
max_connections (最⼤连接数)。因此,长连接的⽤法通常需要在CGI和MySQL之间
实现⼀个 连接池”服务,控制CGI机器 盲⽬”创建连接数。
建⽴数据库连接池服务,有很多实现的⽅式,PHP的话,我推荐使⽤swoole (PHP的
⼀个⽹络通讯拓展)来实现。
3. Innodb缓存设置 (innodb_buffer_pool_size )
innodb_buffer_pool_size这是个⽤来保存索引和数据的内存缓存区,如果机器是MySQL
独占的机器,⼀般推荐为机器物理内存的80%。在取表数据的场景中,它可以减少磁
盘IO 。⼀般来说,这个值设置越⼤,cache命中率会越⾼。
4 . 分库/分表/分区。
MySQL数据库表⼀般承受数据量在百万级别,再往上增长,各项性能将会出现⼤幅度
下降,因此,当我们预见数据量会超过这个量级的时候,建议进⾏分库/分表/分区等
操作。最好的做法,是服务在搭建之初就设计为分库分表的存储模式,从根本上杜绝
中后期的风险。不过,会牺牲⼀些便利性,例如列表式的查询,同时,也增加了维护
的复杂度。不过,到了数据量千万级别或者以上的时候,我们会发现,它们都是值得
的。
⼆、 MySQL数据库多台服务搭建
1台MySQL机器,实际上是⾼风险的单点,因为如果它挂了,我们Web服务就不可⽤
了。⽽且, 着Web系统访问量继续增加,终于有⼀天,我们发现1台MySQL服务器
⽆法⽀撑下去,我们开始需要使⽤更多的MySQL机器。当引⼊多台MySQL机器的时
候,很多新的问题又将产⽣。
1. 建⽴MySQL主从,从库作为备份
这种做法纯粹为了解决 单点故障”的问题,在主库出故障的时候,切换到从库。不
过,这种做法实际上有点浪费资源,因为从库实际上被闲着了。
不过,这种⽅案,只能⽤在两台机器的场景。如果业务拓展还是很快的话,可以选择
将业务分离,建⽴多个主主互备。
三、 MySQL数据库机器之间的数据 步
每当我们解决⼀个问题,新的问题必然诞⽣在旧的解决⽅案上。当我们有多台
MyS
您可能关注的文档
- maya教学1教案.ppt
- MAYA快捷键副本.doc
- 计算机网络和通信技术实验2010.ppt
- 计算机网络基础实验课8教材.ppt
- 计算机网络课后习题答案(第五节).doc
- VMware工具中文手册教材.pdf
- Mcafee(麦咖啡)8.5i 使用设置图解、Mcafee8.5i下载及更新包下载地址.pdf
- VMware虚拟机入门知识.doc
- MCGS PDF教程教材.pdf
- VNX扩容DAE添加教材.docx
- 2021-2022学年陕西省三原县北城中学高一月考数学试卷.docx
- 2021-2022学年吉林省辉南县第六中学高一上学期周测数学试卷.docx
- 安徽省亳州市第五完全中学2021-2022学年高一上学期期中考试历史试题.doc
- 2021-2022学年黑龙江绥化市第一中学高一上学期期中考试数学试卷.doc
- 2021-2022学年河南省商丘一中高一上学期期中语文试题.docx
- 2020-2021学年河北省衡水市第二中学高一上学期期中语文试题(解析版).doc
- 2020-2021学年河北省衡水市第二中学高一上学期期中语文试题.doc
- 2020-2021学年四川省资阳市高一上学期期末语文试题.docx
- 2021-2022学年福建省泉州市永春县一中高一上学期期中语文试题(解析版).doc
- 2020-2021学年四川省资阳市高一下学期期末语文试题.docx
文档评论(0)