设为首页 收藏本站
查看: 962|回复: 0

[经验分享] mysql 上亿级web应用的数据库设计方案

[复制链接]

尚未签到

发表于 2016-10-20 04:28:46 | 显示全部楼层 |阅读模式
  原文链接:http://blog.520.at/post/8ad61_643015
  
 
最近研究mysql数据库设计,收获不少(这里我要感谢xiuno作者)。
 
今天看到微博有朋友转载《mysql sql 百万级数据库优化方案》,我看到这篇文章时,发现有些地方会误导人(毕竟是三年前的文章)。所以我觉得网上的很多文章最好仅供参考比较好,具体情况最好还是以自己测试的结果为准,自己测试也能提高理解的深度。
 
在大数据、大访问量的web应用程序中,瓶颈一般在数据库和IO方面,所以数据库设计至关重要。有人说mysql上千万级数据量,就不行了,其实不然,很多大型互联网公司都大量使用mysql,如:目前淘宝主要核心业务就大量使用的mysql分布式集群。如果现在你还认为mysql不能支持亿级数据量,那只能说明你还不够了解mysql。
(数据库环节主要核心:不要把逻辑处理交给数据库,数据库只负责最省资源的读写环节,如果做到这点,单服务器都能负载亿级的数据量)
 
我简单分享一下最近对大数据数据库设计理解总结吧:
第一阶段:
1,一定要正确设计索引
2,一定要避免SQL语句全表扫描,所以SQL一定要走索引(如:一切的 > < != 等等之类的写法都会导致全表扫描)
3,一定要避免 limit 10000000,20 这样的查询
4,一定要避免 LEFT JOIN 之类的查询,不把这样的逻辑处理交给数据库(主要方便转换成NoSql数据库)
5,每个表索引不要建太多,大数据时会增加数据库的写入压力
 
第二阶段:
1,采用分表技术(大表分小表)
a)垂直分表:将部分字段分离出来,设计成分表,根据主表的主键关联
b)水平分表:将相同字段表中的记录按照某种Hash算法进行拆分多个分表
 
2,采用mysql分区技术(必须5.1版以上,此技术完全能够对抗Oracle),与水平分表有点类似,但是它是在逻辑层进行的水平分表
 
第三阶段(服务器方面):
1,采用memcached之类的内存对象缓存系统,减少数据库读取操作
2,采用主从数据库设计,分离数据库的读写压力
3,采用Squid之类的代理服务器和Web缓存服务器技术(做好分布式服务器群)
 
PS:由于篇幅问题,我只简单说一些基本概念,其实里面每个知识点关系到的内容都很多。特别是第一阶段,很多工作几年的程序员,都不能完全理解。我觉得要真正理解索引,最好的办法就是在1000W-亿级以上的数据,进行测试SQL语句,再结合 explain 命令进行查看SQL语句索引情况。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-288477-1-1.html 上篇帖子: mysql workbench创建表遇到fetching back view definitions in final form 下篇帖子: mysql超时设置using the Connector/J connection property 'autoReconnect=true' to avoid
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表