MySQL DBA 修炼之道读书笔记
第一章:理解mysql
三层架构:
- 表现层(
UI
),直接和用户交互的界面 - 业务逻辑层(
BLL
),对业务逻辑的处理,处理用户的请求 - 数据访问层(
DAL
),操作数据库,增删改查等
- 表现层(
SQL
(结构化查询语言)是声明性语言,只告诉数据库要查询什么,并不告诉数据库如何去查询,数据库所要做的事基于算法和统计信息计算出最佳的访问路径,这个是由优化器(optimizer
)来完成。mysql权限:
- 赋予查询,插入,修改,删除权限
grant select,insert,update,delete on db_name.* to user_name@ '10.%' identified by 'pwd'
- 删除权限:
revoke select,insert,update,delete on db_name.* from user_name@ '10.%'
- 赋予查询,插入,修改,删除权限
数据库引擎:ARCHIVE存储引擎是被设计用来存储企业中的大量流水数据的存储引擎。使用zlib无损数据压缩,让数据都保存在压缩的存档表中。当数据被插入时,它们被压缩。只支持
insert
和select
,支持自增键及其上的索引,不支持其他索引。适合做日志分析,用户行为分析,不需要u、d
和索引的数据。MySQL
是指MYSQL
服务器,mysql
指客户端- 清楚输入字符:可以用
'\c
如果前面语句为单引号则用单引,如果为双引则用双。 MySQL
主要参数设置innodb_buffer_pool_size
为了提升写性能,不清楚环境的数据和访问模式,应该设置为机器物理内存的70%-80%innodb_log_file_size
日志组里每个文件的大小,建议设置256mb或者更大innodb_flush_log_at_trx_commit
建议设置为2,默认为1,设置为2时,你爹事务提交时,日志缓冲被写到文件中,但不对日志文件到磁盘的操作sync_binlog
建议设置为0,不与磁盘同步。如果是autocommit
模式,那么每执行一个语句就会像二进制日志写入一次,否则每个事务写入一次。
第三章:
开发基础:
- 数据模型:是数据的定义和格式,即数据是如何组成的。关系数据库模型是以二维表的结构来标识实体与实体直接的关系,每个二维表又可称为关系。
- DLL=》数据定义语言(
Data Definition language
)是负责数据结构定义与数据库对象定义的语言,通常有用在创建数据库、创建表(create、alter、drop
); - DML=》数据操作语言(
Data Manipulation Language
)是用来查询和修改数据的语句,包括(select、insert、update、delete
)四种语句,就是所说的CRUD(create、read、upadte、delete)
XML(eXtensible Markup Language)
是可扩展标记语言,最开始设计xml
的目的是为了在Internet
上交换数据。- xml被设计为传输和存储数据,其标签描述的是数据的内容,HTML被设计用来显示数据,其标签是用来格式化数据的。
数据类型:以下数据均为有符号(signed)
tinyint
占1字节 最小值-128~~127
smallint
2字节-32768 ~~ 32767
mediumint
3字节-8388608~~8388607
int
4字节-2147483648~~2147483647
bigint
8字节-9223372036954775808~~9223372036954775807
float
值会四舍五入- 日期和时间:
- 没有使用
NO_ZERO_DATES
的SQL
模式,默认情况MySQL只允许在date
或datetime
列保存月和日是零的日期 70~99
表示:1970-1999
00~69
表示:2000-2069
- 同时包含日期和时间信息:用
datetime
8个字节 - 只需要日期:用
date
占3个字节 timestamp
的值是以utc
格式进行保存,存储时会对当前的时区进行转换,检索时在换回当前的时区。当前时区默认是time_zone
系统变量,四个字节;time
类型,三个字节;year
类型,只显示年的时候用,1个字节。
- 没有使用
索引介绍:
种类分为以下几种:
- B树索引(
B-tree
)、散列索引(hash
)、空间索引(R-tree
)、全文索引(full-text
) - 从逻辑上分:单列索引、复合索引(多列索引)、唯一索引(
Unique
)、非唯一(Non Unique
)索引
- B树索引(
簇索引:如果索引键值的逻辑顺序与索引所服务的表中相应行的屋里数序相同,那么就是簇索引,也称为聚集索引、聚簇索引。就是说数据和索引(
B+tree
)在一起,记录被真实地保存在索引的叶子中,簇索引也被称为索引组织表,反之为非聚集索引。InnoDB
是聚集索引索引查询:
- 按最左前缀的原则进行筛选
MySQL优化器:
explain
输出信息extra
中表示的意义:select tables optimized away
意思是查询所包含的MIN、MAX
操作可以直接利用索引信息来解决,不用去检索物理记录。Using index
= 》表示覆盖索引(是指所有的数据都可以从索引中得到,不用去读取物理记录)