一、MySQL基础

 

一、数据库范式

  • 第一范式:每个列都不可以再拆分。 
  • 第二范式:在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。 
  • 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。 在设计数据库结构的时候。

要尽量遵守三范式,如果不遵守,必须有足够的理由。比如性能。事实上我们经常会为了性能而妥协数据库的设计。

二、SQL语言 

1、数据查询语言(DQL,Data Query Language)

常用有:SELECT、WHERE 、ORDER BY、GROUP BY、HAVING

2、数据操作语言(DML,Data Manipulation Language)

常用有:UPDATE、DELETE、INSERT

3、数据定义语言(DDL,Data Defination Language)

常用有:CREATE、ALTER、DROP

4、事务控制语言(TCL)

常用有:COMMIT、SAVE OPINT(保存点)、ROLLBACK

5、数据库控制语言DCL(Data Control Language)

常用有:GRANT或REVOKE实现权限控制

6、指针控制语言(CCL)

常用有:DECLARE CURSOR、FATCH INTO......用于一个或多个表操作

 

三、MySQL存储

1、独占模式

  • 日志组文件:ib_logfile0或ib_logfile1,默认5M大小;
  • 表结构文件:*.frm;
  • 独占表空间文件:*ibd;
  • 字符集和排序规则:db.opt;
  • binlog二进制日志文件:row、statement、mixed三种格式。常用的statement格式记录着主库数据库服务器的DDL、DML操作语句。
  • 二进制日志索引文件:master-bin.index

2、共享模式(innodb_file_per_table=off)

  • 数据都在idbdata1中(类似于schema)

 

四、MySQL执行引擎

引擎 myisam  innodb  memory   archive
 存储限制  256TB  64TB  有  无限制
事务   -  支持
索引   支持 支持   支持
锁粒度  表级锁  行级锁  表级锁  行级锁 
数据压缩   支持  - 支持 
 外键  - 支持   -  -

 

五、MySQL对SQL的执行顺序

1、用于定位表:FROM -> ON -> JOIN ->......

2、用于过滤: -> WHERE -> GROUP BY -> HAVING+聚合函数 ->....

3、用于选择展示的数据:-> SELECT -> ORDER BY -> LIMIT ->...

 

六、MySQL索引原理

1、Mysql索引原理

 InnoDB使用B+树实现聚合索引(默认是B+树,还可以有Hash等),B+树特点如下:

  • B+树相较于B树,B+树数据存在叶子节点,非叶子节点只存主键(long类型占8字节)+指针(8字节)。
  • B+树数据是按页来分块的,每个页大小为16K。
  • 页与页之间使用双向指针相互指向,便于数据的范围搜索。

 

七、MySQL参数配置优化(my.cnf)

1、连接请求的变量

  • max_connections
  • back_log
  • wait_timeout和iterative_timeout

2、缓存区变量

key_buffer_size、query_cache_size...........

3、配置innodb的几个变量

innodb_buffer_pool_size=128m、...............

 

posted @ 2022-07-05 17:43  小珠9779  阅读(32)  评论(0编辑  收藏  举报