码迷,mamicode.com
首页 > 数据库 > 详细

MySql数据库

时间:2020-01-12 09:43:16      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:大写   思想   需要   font   数据   构建   范式   microsoft   空间换时间   

数据库设计步骤:

  • 表结构
  • 字段类型、是否允许为null、是否有默认值
  • 索引设计
  • 数据库引擎的选择

MySql数据库引擎:

  概念:决定数据库数据增删改查的方式,MySQL的核心就是存储引擎;

  InnoDB:默认的引擎,支持事务、外键,查询效率相对较低,安全性较高;

  MyISAM:不支持事务,查询效率相对较高,增删改效率较低。

SHOW ENGINES  # 命令来查看MySQL提供的引擎

SHOW VARIABLES LIKE ‘storage_engine‘; # 查看数据库默认使用哪个引擎

  技术图片

        如果要提供提交、回滚、崩溃恢复能力的事物安全(ACID兼容)能力,并要求实现并发控制,InnoDB是一个好的选择

        如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

        如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

        如果只有INSERT和SELECT操作,可以选择Archive,Archive支持高并发的插入操作,但是本身不是事务安全的。Archive非常适合存储归档数据,如记录日志信息可以使用Archive

       使用哪一种引擎需要灵活选择,一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能

 

复制集与分布式:

  • 复制集:备份的功能

    • 1.多台机器

    • 2.数据有多份,每台机器数据是一样的

    • 3.解决数据高可用

  • 分布式:

    • 1.多台机器

    • 2.数据有一份,每台机器数据是不同的,合在一起,是一份数据

    • 3.解决数据高吞吐

    • 关于主(Master)从(Slave)
      • 这个概念是从使用的角度来阐述问题的
      • 主节点 -> 表示程序在这个节点上最先更新数据
      • 从节点 -> 表示这个节点的数据是要通过复制主节点而来
      • 复制集 可选 主从、主主、主主从从
      • 分布式 每个分片都是主,组合使用复制集的时候,复制集的是从

MySql主从复制:

    作用: 利用主从在达到高可用的同时,也可以通过读写分离提供吞吐量。

    注意: 对于事务中同时包含读写操作,与事务隔离级别设置有关,如果事务隔离级别为read-uncommitted 或者 read-committed,读写分离没影响,如果隔离级别为repeatable-read、serializable,读写分离就有影响,因为在slave上会看到新数据,而正在事务中的master看不到新数据。

    技术图片

 

SQL查询优化思路:

  • 1.避免全表扫描,应考虑在 where 及 order by 涉及的列上建立索引

  • 2.查询时使用select明确指明所要查询的字段,避免使用select *的操作

  • 3.SQL语句尽量大写

  • 4.尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE

  • 5.遵循最左原则,在where子句中写查询条件时把索引字段放在前面

  • 6.能使用关联查询解决的,尽量不要使用子查询

    • 能不使用关联查询的尽量不要使用关联查询

  • 7.不需要获取全表数据的时候,不要查询全表数据,使用LIMIT来限制数据。

 

数据库优化思路:

  • 1.在进行表设计时,可适度增加冗余字段(空间换时间的思想,反范式设计),减少JOIN操作,可以提高查询效率

  • 2.多字段表可以进行垂直分表优化,多数据表可以进行水平分表优化
  • 3.选择恰当的数据类型,

  • 4.对于强调快速读取的操作,可以考虑使用MyISAM数据库引擎

  • 5.对较频繁的作为查询条件的字段创建索引;唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件;更新非常频繁的字段不适合创建索引

  • 6.编写SQL时使用上面的方式对SQL语句进行优化

  • 7.使用慢查询工具找出效率低下的SQL语句进行优化

  • 8.构建缓存,减少数据库磁盘操作

  • 9.可以考虑结合使用内存型数据库,如Redis,进行混合存储。

MySql数据库

标签:大写   思想   需要   font   数据   构建   范式   microsoft   空间换时间   

原文地址:https://www.cnblogs.com/flyai/p/12181696.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!