- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《百科系统及其实现技术》.ppt
提纲 百科简介 功能模块 系统架构 软件结构 LAMP技术 代码重构与扩展 数据库性能优化 百科简介 扩展模块 百科简介 用户中心 百科简介 跟有哪些信誉好的足球投注网站引擎结合(特型展现) 功能模块 系统架构 反向代理 应对慢连接和长连接 防攻击 请求分流 检索系统 LAMP技术/ PHP 变量容器zval 数据类型 引用计数 引用标志 LAMP技术/ PHP zval共享和分离(写时拷贝) 变量空间的回收(循环引用) LAMP技术/ PHP LAMP技术/MySQL B-Tree索引 MyISAM InnoDB 聚簇索引 LAMP技术/MySQL 使用explain查看执行计划 表a: t_campaign 表b: t_campaign_quota (on Fcampaign_id) 表c: t_campaign_soft (on Fcampaign_id) 表d: t_user (on Fid) LAMP技术/MySQL InnoDB引擎 事务支持 隔离级别 未提交读(脏读) 已提交读(不可重复读) 可重复读(幻读?) 可序列化 多版本并发控制(MVCC) 锁只阻塞写,从不阻塞读 行级锁定(通过索引检索,否则加表锁) 隐式锁 记录锁 间歇锁 显式锁(开启事务时生效) 共享锁:select … lock in share mode 排它锁:select … for update 检索端相对独立:cm/transfer模式 一个改进版的流程图 曾失败过几次,均因目标过大和方案过于理想,最终2.0重构的成功得益于兼容老系统的渐进式重构。 1、聚簇索引:索引和数据放一起,相关数据临近存放,有利于磁盘存取;另外也有利于Innodb内存buffer的使用。 2、次级索引:利用索引覆盖进行优化。 了解索引的区分度和存储代价 查询优化工具 查询优化最重要的手段 1、并发事务的处理与性能;使用锁机制解决更新丢失问题。 2、MVCC:记录中隐藏的创建时间和删除时间。 百科系统及其实现技术 王清明 百科简介 百度百科:中文网络百科全书 由广大互联网用户贡献力量编辑而成 于2006首次推出测试版 目前拥有超过300万个词条 每天超过3000个新词条被创建 同类:维基百科、互动百科、搜搜百科 词条 词条名 名片 目录 正文 扩展模块 球赛 地图 相册 参考资料 扩展阅读 开放分类 相关词条 系统架构 前端机器 Lighttpd Apache1.3 Apache2.0 PHP程序 检索系统 用户请求 软件结构 分层模型 目录结构 MVC风格 软件结构 前端控制器框架 类自动加载机制 正则表达式路由 过程式ActionChain 模板引擎 可编译成多种目标语言如PHP 基础库 DB库 提供SQL语句构建器(自动intval和执行escape) 支持负载均衡和故障检测(记录db连接失败时间) 日志类 软件结构 执行流程 LAMP技术/PHP 解释器执行原理 Zend引擎 Opcode缓存 APC eAccelerator LAMP技术/ PHP HashTable 链表散列 双向链表 LAMP技术/ MySQL 查询过程 查询缓存 SQL解析 查询优化 执行计划 存储引擎 LAMP技术/ MySQL LAMP技术/ MySQL B-Tree索引的应用范围(最左前缀原则) 匹配全部列值 匹配最左列值 匹配最左列值前缀 匹配最左列值范围 精确匹配最左列值且匹配次列值的范围 覆盖索引 确立索引的方法 理解数据访问方式和频度 分析索引字段区分度select count(distinct field)/count(*) from table 选择索引长度,创建后用show table status查看索引的大小 代码重构与扩展 百科重构 改进开发模式 面向过程到面向对象 支持快速迭代开发 优化业务逻辑 拆分非核心功能 扩展模块 平台化 代码重构与扩展 BaikeCommand类的扩展设计 Command执行时要被捕获以扩展功能(观察者模式) Command的Listener需访问Command数据(窄接口) 利用Invoker代理对Command对象的访问(代理模式) 数据库性能优化 版本表的背景 状态字段和文本字段放在一起导致单表体积超过100G 部分查询因无索引可用需读出正行数据导致较大I/O负担 单表体积过大使得任何对字段和索引的调整都非常的耗时 数据库性能优化 版本表拆分方案 垂直拆分:分离状态字段和文本字段 水平拆分:按版本ID拆分,区分Hot数据和Cold数据 QA 谢谢大家! 百度第一款基于LAMP技术实现的产品 双机房独立部署:容灾、均衡(CDN-DNS) DB代理:读写分离、负载均衡、失败重连、连接池 * * 百度第一款基于LAMP技术实现的产品 双机房独
文档评论(0)