关闭

【Mysql性能优化四】数据表的设计和读写分离技术

标签: mysql表设计性能优化读写分离
914人阅读 评论(1) 收藏 举报
分类:
mysql优化可以从子查询,数据类型和索引等多个方面进行优化。这些都是从sql语句的方向进行考虑的。当我们的sql语句没有优化的空间的时候,
我们就必须从其他方面来考虑进行数据库性能优化了。

数据表设计

范式化和反范式化

范式化是指我们在设计表时要遵循数据库设计的三个范式,通常要符合第三范式:表中的列之间不能存在传递依赖。
但这并不是一定的。为了查询效率考虑,把原本符合范式化的表设计适当增加冗余,以空间换取时间。这种做法称为反范式化。

表的垂直分割

垂直分割是指将表的很多字段中的某些字段分离开来,单独制成一张表。

这里写图片描述

这种情况适用于表中的某个字段是用比较大的类型比如text,而且又不经常使用的。我们可以把它单独隔离开来,用一个主外键关系来单独进行维护。

表的水平分割

水平分割是指当表中的数据量很大的情况下,都存放在同一张表中会造成查询缓慢问题,所以将表中的数据分别放在几个结构不同的表中,
保证每个表中的数据查询不至于太慢。这种情况下,几个表的数据结构是相同的。

这里写图片描述

两种情况会遇到:1、设计表时直接将这种情况考虑进去,可以根据id来进行设计。id自增,根据求余%,来分别将数据存入不同的表。
2、如果设计时没有考虑到,到程序已经在生产线上运行一段时间时,我曾经遇到过的情况,然后将不经常使用的数据进行数据迁移到另外一张结构相同的表中。

读写分离技术

读写分离是建立在mysql集群上,将写入和读取分离开分别放在不同的mysql服务器上来进行。
在mysql集群中,通过一台master服务器来提供写入的功能。所有的写入操作全部都放在master服务器上。剩下的slave服务器用来进行读的操作。
这样就可以将读写进行分离。大大的减少了服务器查询的压力。
如图:在读取的时候通过mysql的proxy技术完成数据的同步和集群功能,通过amoeba技术进行负载均衡,选择其中一个slave服务器进行查询。

这里写图片描述

以上是有关mysql性能优化上关于数据表设计和读写分离的一些相关的理论知识,真正的还有待项目中实践的结果!
0
0
查看评论

【mysql 读写分离】10分钟了解读写分离的作用

1、what 读写分离 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。2、why 那么为什么要读写分离呢? 因为数据库的“写”(写10...
  • u013421629
  • u013421629
  • 2017-12-13 17:04
  • 429

如何解决mysql读写效率

12321
  • oh_Mourinho
  • oh_Mourinho
  • 2016-08-05 10:52
  • 1705

数据库分区分表以及读写分离

数据库结构的优化有多种方法,主要的有两种:     一是利用存储过程来代替常用的SQL查询语句,减少sql语句解析编译的过程。     另一种是使用数据库管理系统中的分区表方法进。使用存储过程的优化方法有执行速度快的优点,但是其本身不利于调试、没有办法使用数据...
  • xybelieve1990
  • xybelieve1990
  • 2016-03-08 22:28
  • 11881

ubuntu 下基于mycat的mysql读写分离配置

日常唠叨上两篇博客我配置了mysql多实例(相当于有两台mysql服务器,虽然都在本机……..) 还配置了mysql 的主从复制,也就是说具备了配置mysql读写分离的条件。博客链接这两篇是我写的,是配置基于mycat的mysql读写分离的基础 ubuntu下配置mysql启动多实例 ubun...
  • dabai_cai
  • dabai_cai
  • 2017-12-05 16:17
  • 77

mysql-使用mycat实现简单的读写分离

4.3.1Mycat下载 http://www.mycat.io/是Mycat的官方网站,到这个网站可以进行Mycat的下载,在官网还可以下载《Mycat权威指南》pdf的电子档,下载Mycat的源码。目前最新稳定的Mycat版本是Mycat1.6, Mycat有window,linux,unix,...
  • wj903829182
  • wj903829182
  • 2017-06-20 17:01
  • 1069

MySQL主从复制技术与读写分离技术amoeba应用

目前在搭建大型网站,需要用到分布式数据库技术,MySQL的主从复制+读写分离技术。读写分离技术有官方的MySQL-proxy,阿里巴巴的Amoeba。Amoeba能在阿里巴巴这么大流量的平台投入使用而且运行稳定,Amoeba的性能是很优越的,相信眼前事实,所以选择了Amoeba
  • ljuncong
  • ljuncong
  • 2014-08-29 15:02
  • 7401

《MySQL技术精粹:架构、高级特性、性能优化与集群实战》目录

本书针对 MySQL中高级用户,详细讲解 MySQL高级使用技术。书中详解了每一个知识点以及数据库操作的方法和技巧。本书注重实战操作,帮助读者循序渐进地掌握 MySQL中的各项高级技术。 本书主要包括 MySQL架构介绍、MySQL权限与安全、MySQL备份与还原、MySQL的高级特性、MySQL...
  • brucexia
  • brucexia
  • 2016-04-29 19:07
  • 2075

MySQL分表分库&读写分离相关

MySQL架构优化 1.分表 当项目上线后,数据将会几何级的增长,当数据很多的时候,读取性能将会下降,更新表数据的时候也需要更新索引,所以我们需要分表,当数据量再大的时候就需要分库了。 a.水平拆分:数据分成多个表 b.垂直拆分:字段分成多个表 c.插入/更新/删除数据和查询统计 MyI...
  • wkyworkuno
  • wkyworkuno
  • 2017-02-19 16:16
  • 1053

实战mycat读写分离和分库分表(2)-本地mysql主从配置

接上一篇实战mycat读写分离和分库分表(1)-本地mysql多实例搭建 上一篇已经跑起了4个mysql实例,本篇的目的是配置mysql一主多从同步,mysql-m1为主,mysql-s1、mysql-s2、mysql-s3为从。 1.创建mysql-m1的slave用户 mysql -P3...
  • liwei2633
  • liwei2633
  • 2017-05-21 23:18
  • 637

mysql实现读写分离中间件Amoeba

Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Databas...
  • tianwei7518
  • tianwei7518
  • 2016-12-04 21:42
  • 1129
    个人资料
    • 访问:273311次
    • 积分:7513
    • 等级:
    • 排名:第3456名
    • 原创:156篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2070条