为什么80%的码农都做不了架构师?>>>   

需求概述

一个简单的讨论区系统,需要有用户,用户组,组讨论区这三部分基本功能

简要分析

1) 须要存放用户数据的表;

2) 须要存放分组信息和用户与组关系的表;

3) 须要存放讨论信息的表

解决方案

原始方案一:

分别用4个表来存放用户,用户组,用户与组关系,以及各组的讨论帖子的信息。

user用户表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

nick_name

varchar(32)

NO

NULL

password

char(64)

YES

NULL

email

varchar(32)

NO

NULL

status

varchar(16)

NO

NULL

sexuality

char(1)

NO

NULL

msn

varchar(32)

YES

NULL

sign

varchar(64)

YES

NULL

brithday

date

YES

NULL

hobby

varchar(64)

YES

NULL

location

varchar(64)

YES

NULL

description

varchar(1024)

YES

NULL

groups分组表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

gmt_create

datetime

NO

NULL

gmt_modified

datetime

NO

NULL

name

varchar(32)

NO

NULL

status

varchar(16)

NO

NULL

description

varchar(1024)

YES

NULL

user_group关系表

Field

Type

Null

Key

Default

Extra

user_id

int(11)

NO

MUL

NULL

group_id

int(11)

NO

MUL

NULL

user_type

int(11)

NO

NULL

gmt_create

datetime

NO

NULL

gmt_modified

datetime

NO

NULL

status

varchar(16)

NO

NULL

group_message讨论组帖子表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

NULL

gmt_create

datetime

NO

NULL

gmt_modified

datetime

NO

NULL

group_id

int(11)

NO

NULL

user_id

int(11)

NO

NULL

subject

varchar(128)

NO

NULL

content

text

YES

NULL

优化后方案二如下

user用户表分成user用户表与user_profile表

group_message讨论组表分成group_message讨论组与group_message_content

user用户表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

nick_name

varchar(32)

NO

NULL

password

char(64)

YES

NULL

email

varchar(32)

NO

NULL

status

varchar(16)

NO

NULL

user_profile用户属性表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

sexuality

char(1)

NO

NULL

msn

varchar(32)

YES

NULL

sign

varchar(64)

YES

NULL

brithday

date

YES

NULL

hobby

varchar(64)

YES

NULL

location

varchar(64)

YES

NULL

description

varchar(1024)

YES

NULL

group_message讨论组帖子表

Field

Type

Null

Key

Default

Extra

id

int(11)

NO

NULL

gmt_create

datetime

NO

NULL

gmt_modified

datetime

NO

NULL

group_id

int(11)

NO

NULL

user_id

int(11)

NO

NULL

subject

varchar(128)

NO

NULL

author

varchar(32)

NO

NULL

group_message_content帖子内容表

Field

Type

Null

Key

Default

Extra

group_msg_id

int(11)

NO

content

text

NO

NULL

分析考虑:

1. 从实际出发,一个讨论区系统,访问最多的页面应该是帖子标题列表页面。而帖子标题列表页面最主要的信息都来自于group_message表中,同时帖子标题后面的作者一般都是通过用户名(昵称)来展示。因此:

1) 按照第一种解决方案:

SELECT t.id, t.subject, user.id, u.nick_name

FROM

(

SELECT id, user_id, subject

FROM group_message

WHERE group_id = ?

ORDER BY gmt_modified DESC LIMIT 20

) t, user u

WHERE t.user_id = u.id

2) 按照第二种解决方案:

SELECT t.id, t.subject, t.user_id, t.author

FROM group_message t

HWERE group_id = ?

ORDER BY gmt_modified DESC LIMIT 20

两个查询一比较,打搅就能很明显地看出谁优谁劣了。

2. 由于第一方案中的group_message 表中还包含一个大字段’content’,该字段存放的信息要占整个表的绝大部分存储空间,但在1中表现的最频繁的Query完全不需要该字段所存放的信息,所以,造成了Query读取大量没有任何意义的数据。因此,需要把content字段单独分出来存放在group_message_content帖子内容表中。

转载于:https://my.oschina.net/stream/blog/31997

MYSQL性能调优及架构设计学习笔记-影响MYSQL性能的相关因素之实例分析相关推荐

  1. MYSQL性能调优及架构设计学习笔记-基础篇MYSQL架构组成

    为什么80%的码农都做不了架构师?>>>    目录 小结 MYSQL物理文件组成 MYSQL系统架构 MYSQL自带工具使用介绍 小结 本章主要从逻辑层与物理层两个方面介绍了MYS ...

  2. MySQL性能调优与架构设计——第4章 MySQL安全管理

    第4章 MySQL安全管理 前言 对于任何一个企业来说,其数据库系统中所保存数据的安全性无疑是非常重要的,尤其是公司的有些商业数据,可能数据就是公司的根本,失去了数据的安全性,可能就是失去了公司的一切 ...

  3. 读《MySQL性能调优与架构设计》笔记之ORDER BY,GROUP BY 和DI STI NCT 优化

    1.1. ORDER BY 的实现与优化 在MySQL 中,ORDER BY 的实现有如下两种类型: ◆ 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端要求的有序数 ...

  4. 《mysql性能调优与架构设计》笔记: 一mysql 架构组成

    2019独角兽企业重金招聘Python工程师标准>>> 2.1mysql物理文件组成 2.1.1日志文件: 1,查看mysql配置文件:mysql --verbose --help ...

  5. 转】MYSQL性能调优与架构设计之select count(*)的思考

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...

  6. MySQL性能调优与架构设计——第5章 备份与恢复

    第5章 备份与恢复 前言 数据库的备份与恢复一直都是 DBA 工作中最为重要的部分之一,也是基本工作之一.任何正式环境的数据库都必须有完整的备份计划和恢复测试,本章内容将主要介绍 MySQL数据库的备 ...

  7. MySQL性能调优与架构设计——第11章 常用存储引擎优化

    第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...

  8. mysql性能调优 高可用_MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案...

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  9. mysql性能调优与架构设计_了解架构设计远远不够!一文拆解 Tomcat 高并发原理与性能调优

    来源 | 码哥字节 上帝视角拆解 Tomcat 架构设计,在了解整个组件设计思路之后.我们需要下凡深入了解每个组件的细节实现.从远到近,架构给人以宏观思维,细节展现饱满的美.关注「码哥字节」获取更多硬 ...

最新文章

  1. javascript 判断 前端 是 pc端 还是 移动端
  2. [排序算法] 选择排序(2种)
  3. Python用selenium简单方法处理完子窗口切换到主窗口
  4. lvm 扩展根目录_Linux下lvm在线扩容步骤
  5. git批量删除没用的远程分支
  6. VREP中的力触觉设备接口(CHAI3D)
  7. keynote代码高亮【转】
  8. qt messagebox退出程序_Qt多线程创建
  9. 用户使用DocConvert处理文档后对DocConvert的评价
  10. uniapp拍照上传照片流程笔记
  11. 波长光电IPO过会:年营收3亿 黄胜弟与朱敏夫妇是实控人
  12. 计算机桌面如何整理,怎么整理电脑桌面
  13. 什么是响应式布局设计?
  14. 四种xml的解析方式
  15. 一文搞定贷款利息计算
  16. npm login e401问题(npm ERR! Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Mana)
  17. 云计算技术基础【15】
  18. 程序人生:每天工作的第一个小时,做什么?
  19. 【子网划分】求子网网络前缀、子网地址、每个子网可以分配给主机使用的最小地址和最大地址
  20. JAVA主方法(main)方法解释

热门文章

  1. 算法(9)--两个数的最大公约数
  2. linux加密框架 crypto 算法管理 - 算法查找接口 crypto_find_alg
  3. 以太坊账户 相关知识
  4. Linux操作系统监视NVIDIA的GPU使用情况
  5. Ubuntu12.10中安装ati显卡驱动amd driver 13.1
  6. 腾讯CKV海量分布式存储系统
  7. 如何检测C语言中的内存漏洞(leak)?
  8. linux下gdb单步调试
  9. 芯片支持的且会被用到的H.264特性 预测编码基本原理
  10. 解决:which: no java in (/root/chengxu/maven/apache-maven-3.5.2/bin:/usr/local/sbin:/usr/local/bin:/usr