美文网首页
编程概念(一):数据库相关

编程概念(一):数据库相关

作者: justworld | 来源:发表于2019-05-18 12:22 被阅读0次

1、sql关键字写的顺序以及执行顺序

建议的书写顺序为:

SELECT [ DISTINCT ]
FROM
WHERE
GROUP BY
HAVING
UNION
ORDER BY

执行顺序:

FROM <left_table>
ON <join_condition>
<join_type> JOIN <right_table>
WHERE <where_condition>
GROUP BY <grout_by_list>
HAVING <having_condition>
SELECT
DISTINCT <select_list>
ORDER BY <order_by_list>
LIMIT <limit_number>

2、数据库三范式

  • 1NF是对属性的原子性约束,要求属性(列)具有原子性,不可再分解(只要是关系型数据库都满足1NF)
  • 2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性
  • 3NF是对字段冗余性的约束,它要求字段没有冗余。 没有冗余的数据库设计可以做到

3、索引

  • 索引类型
    根据用途可分为:普通索引、唯一索引(可为空)、主键索引(特殊的唯一索引,不能为空)、组合索引(最左前缀)、覆盖索引、全文索引(类似搜索引擎)。根据结构可分为:BTREE、HASH(缺点有不适合于组合索引和覆盖索引情况、不能排序、不能范围查询<>和<=>不一样)、RTREE(适用于范围查询,空间索引)、FULL TEXT
  • 索引好处
    减少扫描数据量、避免排序和临时表、随机IO变为顺序IO
  • 索引缺点
    会增大开销,对UPDATE、INSERT等语句会有性能影响
  • 不使用索引场景
    有or、组合索引不符合规则、like查询是以%开头、优化引擎认为不用索引更快
  • 索引原理
    待完善

4、数据库事务

  • ACID原则(原子性、一致性、隔离性、持久性)
  • 隔离级别:未提交读、提交读(不可重复读)、可重复读(默认会导致幻读,可通过MVCC处理)、可串行(级别最高,开销最大)

5、mysql存储引擎

  • InnoDB
    默认事务型引擎,采用MVCC(多版本并发控制)支持高并发,实现了四个事务级别,默认可重复读(通过间隙锁处理了幻读)
  • MyISAM
    5.1之前的默认引擎,支持很多特性包括全文索引(5.6后InnoDB支持)、压缩、空间函数等,不支持事务和行级锁,崩溃不能安全恢复。某些场景性能很好,最典型性能问题是表锁

6、查询优化(不同场景可能结论不同,适用于大部分场景)

  • 看查询计划
  • 使用索引,特别是覆盖索引
  • 是否请求了不需要的数据
  • 减少查询数据量,比如join时先过滤数据,或对中间数据做缓存表
  • 用联表代替子查询
  • 尽可能减少sql执行次数,减少请求网络延时
  • 使用正确而小的数据类型,比如内建类型存时间,整数类型存ip
  • 尽量避免null
  • 冗余数据避免联表
  • 分表分区
  • 业务结构优化
  • 硬件、中间件等支持

——————————————————————————————

  • 注1:本文很多概念来源于《高性能MySQL》
  • 注2:以上概念无特别说明适用于mysql,不同数据库可能会有出入

相关文章

  • 编程概念(一):数据库相关

    1、sql关键字写的顺序以及执行顺序 建议的书写顺序为: 执行顺序: 2、数据库三范式 1NF是对属性的原子性约束...

  • 硬件编程相关概念

    硬件相关1、NoC(network-on-chip)NoC是相对于SoC的新一代片上互连技术。SoC(system...

  • 【编测编学】MySQL数据库基础知识

    一:数据库的相关概念 [if !supportLists]1、[endif]数据库的好处 [if !support...

  • MySQL基础概念

    MySQL的基础笔记 数据库的相关概念 数据库的安装&卸载 SQL语言概念&分类 SQL语句的分类 一.数据库的相...

  • 1-JDBC是什么

    JDBC概念 JDBC (Java Database Connectivity) API,即Java数据库编程接口...

  • 数据库相关概念

    分布式数据库 事务 什么是事务? 事务就是并发 + 锁 事务就是为了保证数据的一致性,ACID保证事务的完整性 事...

  • 数据库相关概念

    DB:数据库(Database),存储数据的仓库,它保存了一系列有组织的数据 DBMS:数据库管理系统(Datab...

  • volatile

    参考:Java并发编程:volatile关键字解析 一.内存模型的相关概念 二.并发编程中的三个概念 三.Java...

  • 编程概念(二):python相关

    1、内存管理 内存计数 垃圾回收 内存池小于256字节使用Pymalloc,大对象用系统malloc 2、进程间通...

  • mysql入门

    本单元目标 ​ 一、为什么要学习数据库​ 二、数据库的相关概念​ DBMS、DB、SQL​ ...

网友评论

      本文标题:编程概念(一):数据库相关

      本文链接:https://www.haomeiwen.com/subject/bnozaqtx.html