原文链接: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语句索引情况。
相关推荐
02-DBA参与项目数据库设计及培训开发人员高效设计MYSQL库语句.avi 03-老男孩核心思想-项目周期的制定思想.avi 04-linux进程占用cpu高的解决方案案例.avi 05-数据库账户权限控制多种思路及技巧.avi 06-数据库客户端...
各个模块由后台数据库系统和相应的子系统应用程序组成 三、注意事项 1、管理员账号:admin密码:admin 数据库配置文件 data.php 2、开发环境为PHP APACHE,数据库为mysql5.0,使用php语言开发。 3、数据库文件名...
8.2 如何设计Web数据库 8.2.1 考虑要建模的实际对象 8.2.2 避免保存冗余数据 8.2.3 使用原子列值 8.2.4 选择有意义的键 8.2.5 考虑需要询问数据库的问题 8.2.6 避免多个空属性的设计 8.2.7 表格类型的总结 ...
TreeSoft数据库管理系统系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL 数据库进行维护管理操作。功能包括:数据库的展示,库表的展示,表字段结构的展示, SQL...
8.2 如何设计Web数据库 8.2.1 考虑要建模的实际对象 8.2.2 避免保存冗余数据 8.2.3 使用原子列值 8.2.4 选择有意义的键 8.2.5 考虑需要询问数据库的问题 8.2.6 避免多个空属性的设计 8.2.7 表格类型的总结 8.3 Web...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
Web Service数据库同步系统的设计与实现 1 摘要 1 1引言 3 1.1课题背景 3 1.2国内外研究现状 4 ...4.2数据库设计 20 5代码实现 22 5.1登录身份验证 22 5.2多数据源配置 23 5.3同步数据实现 23 结论 24 致 谢 26
2.2mysql数据库 7 2.3 jsp技术 8 2.4 MVC框架 8 3系统需求分析 9 3.1功能需求分析 9 3.2数据需求分析 10 3.3性能需求分析 11 3.4数据流分析 11 4系统设计 13 4.1系统设计思想 13 4.2系统总体设计 14 4.3系统功能设计...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,另外,MySQL在UNIX等操作系统上是免费的,在Windows操作系统上,可免费使用其客户机程序和客户...
按照系统架构设计方案和各模块功能,求职招聘系统共分为两个权限,分别是系统管理员和注册用户,管理员具有用户管理、招聘管理、求职管理、简历管理、公告管理、投递管理等;用户 可以注册登录进行查看招聘和求职...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。 它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
29.基于Web的社区医院管理服务系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) 详细设计文档介绍链接:http://t.csdnimg.cn/NgQjJ 内容概要: 社区医院...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...
自1998年首次发布以来,MySQL以其卓越的性能、可靠性和可扩展性,成为全球范围内Web应用程序、企业级解决方案以及其他各种数据处理场景的首选数据库平台之一。 以下是对MySQL数据库的详细介绍: 核心特性与优势 ...