- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《开发规
MySQL开发规范
简介
持续借鉴、收集并整理一些开发规范和技巧,期望能更充分利用MySQL的特性,得到更好的性能。
规范是死的,人是活的。
现在定义的规范,是为以后推翻准备的。
目的
提供给开发人员参考,方便写成更有效率的开发。
范围
文档涉及的范围:需要基于MySQL做应用开发的人员。
定义、首字母缩写词和缩略语
暂无
数据库设计
目标三个:功能实现,可伸缩性,可用性。
关键点:平衡业务技术各个方面,做好取舍。
80%的性能优化来自架构设计的优化。
引擎及版本选择
引擎建议使用InnoDB
根据目前我们业务的特点,建议使用MySQL5.1社区版和InnoDB plugin或MySQL5.5,后续MySQL5.6比较稳定后再行考量和评估。
架构浅谈
开发大牛都擅长,这里不多提,仅标注一下。
非功能性需求
读写分离
分库分表
热点数据
多级缓存
雪崩效应与过载保护
读优化
写优化
schema设计
尽量不在数据库做运算
复杂运算移到程序端CPU
尽可能简单应用MySQL
如:md5() 或Order by Rand()或计算字段等操作不在数据库表上进行。
适当的范式设计
库和表预估
常见的有100库100表,1000库10表等。
建议单库不超过300-400个表。
总空间容量不超过100G。
单表控制
考虑因素
IO高效;全表遍历;表修复快;提高并发;alter table快。
字段数量
建议上限20~50个。
一年内的单表数据量预估
建议纯INT不超1000W,含CHAR不超500W。
举例
单表1G体积 500W行评估:
顺序读1G文件需N秒
单行不超过200Byte
单表不超50个纯INT字段
单表不超20个CHAR(10)字段
拒绝3B
大SQL (BIG SQL)
大事务 (BIG Transaction)
大批量 (BIG Batch)
反范式设计
概念
无外键,少多表join查询。
便于分布式设计,允许适度冗余,为了容量扩展允许适度开销。
基于业务自由优化,基于i/o 或查询设计,无须遵循范式结构设计。
典型场景
原有展现程序涉及多个表的查询,希望精简查询程序。
数据表拆分往往基于主键,而原有数据表往往存在非基于主键的关键查询,无法在分表结构中完成。
存在较多数据统计需求(count, sum等),效率低下。
解决思路
基于展现的冗余设计
如:
消息表message,存在字段 from_uid,to_uid,msg,send_time 四个字段,而展示程序需要显示发送者姓名和性别。
通常在message表中增加冗余字段from_username和from_user_sex即可。
基于查询的冗余设计
如:
用户分表,将用户库分成若干数据表。基于用户名的查询和基于uid的查询都是高并发请求。用户分表基于uid分成数据表,同时基于用户名做对应冗余表。
如果允许多方式登陆,可以有如下设计方法:
uid,passwd,用户信息等等,主数据表,基于uid分表
ukey,ukeytype,uid基于ukey分表,便于用户登陆的查询。分解成如下两个SQL:
select uid from ulist_key_13 where ukey=$username and ukeytype=$login;
select * from ulist_uid_23 where uid=$uid and passwd=$passwd;
ukeytype定义用户的登陆依据,比如用户名,手机号,邮件地址,网站昵称等。 Ukey+ukeytype必须唯一。
此种方式需要登陆密码统一,对于第三方接入模式,可以通过引申额外字段完成。
基于统计的冗余设计
如:
count(*)操作。
需要不精准结果,可以直接show table status like …获得。
需要精准结果,可以在缓存层增加key-value对,实时更新该key-value。同时异步更新到数据库中冗余字段,或冗余表中。
历史数据表
历史数据表对应于热点数据表。
将需求较少又不能丢弃的数据,仅在少数情况下被访问存入历史数据表。
全文检索设计
最差的设计
直接使用sql语句where条件中使用like %fulltext%
直接全表扫描或全索引扫描,性能最差,无任何扩展,基本不可接受。
MySQL相关引擎支持
MyISAM全文索引,使用match()函数有哪些信誉好的足球投注网站。InnoDB从MySQL5.6.4开始支持全文索引,对中文支持不好,使用MATCH()…AGAINST。
并发不高,数据量不大,业务逻辑简单,可以考虑。
使用外部开源全文检索引擎
目前常用的有sphinx和lucene等。
适合并发高,数据量大,业务逻辑复杂的场景。
主要关注预热、增量更新及分片功能的实现。
分页设计
传统分页
Sele
您可能关注的文档
- 《建设管理工程项目管理大纲.doc
- 《实验七FlashCS5动画制作.doc
- 《建设系统建筑企业管理工作会议上的讲话2).doc
- 《实验二中语言文字规范化.doc
- 《实验二电主轴的使用与维护.doc
- 《建设美丽湘潭创建绿色湘钢4.doc
- 《建设节能的定义和范围.doc
- 《实验六Dv+CSS网页布局.doc
- 《建设部建筑节能十五计划纲要.doc
- 《实验八网页制作成都理工大学工程技术学院.doc
- 冠名商回报方案范本(三篇) .pdf
- 公司转让公告范本 .pdf
- 高性能液压控制元件及集成阀块建设项目可行性研究报告.pdf
- 项目二 汽车传动系统检修答案[7页].pdf
- 人教版道德与法治六上【精】1 感受生活中的法律 (课件).pptx
- 人教版道德与法治五上【精】6 我们神圣的国土 (课件).pptx
- 人教版道德与法治六上【精】2 宪法是根本法 (课件).pptx
- 人教版道德与法治五上五年级上册道德与法治试题-第三单元 我们的国土 我们的家园 百分卷 部编版(word,含答案).doc
- 人教版道德与法治五上五年级上册道德与法治试题-第二单元 我们是班级的主人 百分卷 部编版(word,含答案).doc
- 人教版道德与法治四上【核心素养目标】7.1 健康看电视 第一课时 神奇的宝盒+眼睛的抗议书 教案设计.docx
最近下载
- 理论联系实际,请阐述你对坚定中国特色社会主义文化自信的理解。(三).docx
- 细胞生物学实验-南京大学-中国大学MOOC慕课答案.pdf
- 《医学科研诚信与医学研究伦理》题库答案汇总.docx VIP
- GBT15231-2023玻璃纤维增强水泥性能试验方法.pdf
- (人教2024版)生物七上 第二章 认识细胞 单元复习课件.pptx
- 消防安全管理工作ppt.pptx VIP
- 日照市2022级(2025届)高三上学期校际联合(期中)考试化学试卷(含答案).pdf
- FDA行业指南:分析方法验证草案2000中英文对照[定义].pdf VIP
- 华东理工分析化学(第七版)习题解答.pdf
- 水和水蒸气的密度表.pdf
文档评论(0)