原文链接: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语句索引情况。
相关推荐
在PHP和MySQL的世界里,Web数据库应用开发是构建动态网站和Web应用程序的关键组成部分。这个指南将深入探讨如何利用这两种技术创建高效、可靠的数据库驱动的Web应用程序。PHP是一种广泛使用的开源服务器端脚本语言,...
在本文中,我们将深入探讨"Web端后台MySQL数据库设计1"这一主题,主要关注数据库的架构和表的设计,以及它们如何支持Web应用的功能。 首先,我们来看一下服务器环境的配置。服务器选择的是阿里云的解决方案,运行的...
动态网页设计的重要性不仅仅在于提供更好的用户体验和满足客户更多的需求,而且在Web应用开发中,能够实现信息的即时交互,这对于满足不断变化的网络环境和用户需求至关重要。动态网页设计的开发涉及到ASP、PHP、JSP...
MySQL数据库是全球最受欢迎的开源关系型数据库管理系统之一,它以其高效、可靠和易于维护的特点,在Web开发、企业级应用和数据分析等领域广泛应用。本课件PPT涵盖了MySQL的基础知识到高级特性的深入理解,旨在帮助...
总的来说,Web数据库设计涵盖了从数据库系统模型、连接技术到数据库产品选择的多个方面,它是构建Web应用程序的关键组成部分,使得用户可以通过Web页面无缝地访问和操作数据。了解这些知识点对于Web开发者来说至关...
总结来说,这个资源提供了一套完整的省市县镇四级联动数据库解决方案,涵盖了从数据库设计、数据填充到实际应用的关键步骤。对于需要处理此类地域信息的项目,这是一个非常有价值的参考资料。通过深入学习和实践,...
总结来说,Web版的数据库管理工具结合了Java的稳定性和Angular的易用性,为用户提供了一种跨平台、易访问的数据库管理解决方案。通过这种工具,无论是开发者还是非技术人员,都能更高效地管理和操作数据库,提升工作...
- **核心开发技术**:JSP Web数据库开发需要掌握的核心技术包括Java Server Pages、JDBC、数据库模式设计。 - **开发模型**:JSP应用程序的开发基于Java Server Pages开发模型,主要通过JSP和Servlet技术实现Web应用...
8. 单元8:分析与设计MySQL数据库,涉及数据库设计原则,如ER模型,以及数据库优化策略。 课程教学流程设计包含三个关键环节:前导知识、操作实战和单元习题。前导知识部分帮助学生系统掌握理论基础;操作实战环节...
3. 数据库设计:数据库设计是系统的核心部分。本项目可能包含了如“学生”、“教师”、“管理员”、“课程”、“成绩”等多个表,每个表都有相应的字段来存储不同种类的信息。通过合理设计实体间的关系(如一对多、...
总的来说,这个主题涵盖了数据库管理和开发的多个方面,包括数据库设计、版本控制、软件测试和自动化工具的使用。对于开发人员和数据库管理员来说,理解并掌握这些技能是确保系统稳定运行的关键。通过使用专门的工具...
【描述】:“一个简单的web数据库设计 一个简单的web数据库设计”这部分描述表明,这个压缩包可能包含了一个基础级别的Web数据库设计方案,可能是为了教学或入门实践而创建的。它可能涵盖了如何构建、操作和维护一个...
它主要面向希望了解和掌握Web数据库应用开发的初学者和专业人士。Web数据库技术是现代互联网应用的重要组成部分,它使得用户可以通过网页接口进行数据的查询、更新和管理。本教程将带你走进这一领域的核心知识,让你...
本文主要讨论了 MySQL 数据库教学中的难点和解决方案,以数据库设计为例,探讨了 MySQL 数据库教学中存在的问题和挑战,旨在提高教学效率和学生学习兴趣。 一、 MySQL 服务器环境配置 MySQL 配置工具内容十分复杂...
在本项目中,"PHP+layer+tp5+mysql数据库...总的来说,"PHP+layer+tp5+mysql数据库模型设计"项目提供了一个学习和实践Web开发的综合平台,涵盖后端编程、数据库设计、前端交互等多个方面,对提升开发者技能大有裨益。
其次,MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用程序。在这个学生宿舍管理系统中,MySQL用于存储和管理宿舍、学生、管理员等相关数据。开发者可以使用SQL语句来创建、读取、更新和删除(CRUD)...
在Java Web数据库应用系统开发中,我们通常会涉及到多个关键技术和概念,这些是构建高效、稳定和可扩展的Web应用程序的基础。以下是对这些知识点的详细解释: 1. **Java编程语言**:Java是一种广泛使用的面向对象的...
总之,SSM框架与MySQL的整合为开发者提供了完整的Web应用解决方案,通过合理地运用这三个框架,我们可以构建出高效、可维护的Java Web应用。在学习过程中,建议动手实践,结合文档和示例项目,逐步掌握SSM框架整合的...