- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
mysql开发规范mysq开发规范mysql开发规范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等。
适合并发高,数据量大,业务逻辑复杂的场景。
主要关注预热、增量更新及分片功能的实现。
分页设计
传统分页
Select * from table limit 10000,10;
LIMIT原理
Limit 10000,10
偏移量越大则越慢
LIMIT方式推荐分页
S
您可能关注的文档
- module1 grammr外研社必修一高中英语module1 grammar外研社必修一高中英语module1 grammar外研社必修一高中英语module1 grammar外研社必修一高中英语.ppt
- module_6_the_nternet_and_telecommunications教案module_6_the_internet_and_telecommunications教案module_6_the_internet_and_telecommunications教案module_6_the_internet_and_telecommunications教案.doc
- morning call叫程序morning call叫醒程序morning call叫醒程序morning call叫醒程序.ppt
- mpa研究生考试语文写作论有效性分析讲义mpa研究生考试语文写作论证有效性分析讲义mpa研究生考试语文写作论证有效性分析讲义mpa研究生考试语文写作论证有效性分析讲义.doc
- mpeg_2(psi&simpeg_2(psi&si)mpeg_2(psi&si)mpeg_2(psi&si).ppt
- mon段落翻译.ppt
- module1 cultue corner外研社必修一高中英语module1 culture corner外研社必修一高中英语module1 culture corner外研社必修一高中英语module1 culture corner外研社必修一高中英语.ppt
- mr.鲍的课程设计mr.鲍课程设计的课程设计.doc
- mpls ldp 基本配置pls ldp 基本配置mpls ldp 基本配置mpls ldp 基本配置.doc
- mri基本原理.ppt
- 语文-广东省肇庆市2025届高三第二次模拟试卷和答案(肇庆二模).docx
- 中国通信行业运行情况月度报告(2024年1-11月).pdf
- 2024年中国新能源汽车行业全球竞争力分析与各国进口贸易法规影响白皮书-特易资讯.pdf
- 热电“三保”与碳排双控.pdf
- 数据中心行业分析报告 2025.pdf
- 【灼鼎咨询】2024年自动驾驶行业知识报告(智能驾驶、新能源汽车、NOA).pdf
- 政治-江苏省苏州市2024-2025学年2025届高三第一学期学业期末质量阳光指标调研卷试题和答案.docx
- 政治-广东省东莞市、揭阳市、韶关市2025届高三期末教学质量检查试题和答案.docx
- 自适应物理安全与信息安全系统 -智能制造的动态安全方法 2025.pdf
- 【国联证券】通信行业专题研究:Marvell AI day,算力需求推动光互联加速迭代.pdf
最近下载
- 数码相机-SONY索尼-HDR-SR1E说明书.pdf
- 数学的发展历程.pptx
- 医药销售年终总结PPT.pptx
- 多维阅读第5级SmokeJumpersHelp消防队在行动方芳-完整版PPT课件.pptx
- 日本大学2015留学.ppt
- 高标准农田假设检验批表格.doc VIP
- 2024年湖北省烟草专卖局(公司)招聘笔试真题.docx VIP
- 课题申报书:家校共育背景下儿童社会情感能力的异质性发展机制及促进研究.docx VIP
- 2025年八省联考陕西高考生物试卷真题答案详解(精校打印).pdf VIP
- Unit 1 Meeting New Friends (教学设计)-2024-2025学年闽教版英语五年级上册.docx
文档评论(0)