数据库11总结

  1. 数据库的介绍和安装
    1.1 数据库产品
    RDBMS: 结构化存储关系数据(二维表)
    NoSQL : 无结构存储数据(json,KV...)
    {
    id:101,
    name:zs
    }

key:value

1.2 MySQL版本
5.6 : 5.6.34 36 38 40
5.7 : 5.7.18 20 ...
8.0 : 8.0.11

1.3 安装
5.6
scripts/mysql_install_db --user --basedir --datadir

5.7
bin/mysqld --initialize-insecure --user --basedir --datadir

  1. 体系结构和基础管理
    2.1 C/S结构
    client: mysql , mysqldump
    mysqld:
    Scoket文件: -S /tmp/mysql.sock
    TCP/IP : -h -P

2.2 实例
后台守护进程mysqld+master thread + 干活 + 内存结构

2.3 mysqld 工作过程
SQL种类: DDL,DCL,DML,DQL
select 语句工作流程
select user,host from mysql.user;

2.4 逻辑结构
库 : 库名,库属性
表 : 表名,表属性,列(列名,列属性)

2.5 物理结构
表空间 : 独立表空间,一张表一个表空间
段 : 一张表就是一个段,1个或多个区构成
区 : 一个区是,连续的64个页,默认是1M
页 : 连续4个OS block,默认是16K

把控一个原则: 连续

2.6 用户权限管理
(1) 8.0 以前
grant : 建用户,授权,密码 一条龙.
grant 权限 on 范围 to 用户 identified by '密码'

reovke 回收权限
revoke 权限 on 范围 from 用户.

(2) 8.0
先建用户再授权
create user 用户名 identified by '密码';
grant 权限 on 范围 to 用户;

(3) 忘记本地管理员密码
--skip-grant-tables
--skip-networking

flush porivileges;
alter user root@'localhost' identified by '123';

2.7 连接管理
事先把用户创建好.
客户端工具
mysql :
mysql -uroot -p123 -S /tmp/mysql.sock
mysql -uroot -p123 -h 10.0.0.51 -P 3306

安装API
yum install php-mysql
pip3 install pymysql
xxxxx.jar
https://dev.mysql.com/downloads/

2.8 MySQL的启动关闭
启动 :
Sys-V
systemd

mysqld_safe
mysqld

关闭 :
Sys-V
systemd
mysqladmin

2.9 初始化配置
[mysqld]

基本配置

basedir=/usr/local/mysql/ # 程序路径
datadir=/data/mysql/data # 数据路径
socket=/tmp/mysql.sock # socket文件位置
server_id=51 # 主机编号
port=3306 # 端口号
secure-file-priv=/tmp # into outfile 安全路径
autocommit=0 # 自动提交功能(1/0)
max_allowed_packet # 控制最大数据包大小

日志有关

log_bin=/data/binlog/mysql-bin # 二进制日志位置
binlog_format=row # 二进制日志格式
sync_binlog=1 # 控制二进制日志刷新策略
gtid-mode=on # 开启GTID模式
enforce-gtid-consistency=true # 强制GTID一致性
log-slave-updates=1 # 从库中强制更新GTID事务到本地binlog (MHA必须开,双主模式)
exprie_logs_days # 二进制日志过期时间
slow_query_log=1 # 慢日志开关
slow_query_log_file # 慢日志位置
long_query_time # 慢日志记录条件(时间)
log_queries_not_using_indexes # 慢日志记录条件(不走索引的)
log_error # 错误日志
general_log # 通用日志

InnoDB存储引擎相关

innodb_flush_log_at_trx_commit=1 # redo刷新策略(0/1/2)
innodb_buffer_pool_size=2048M # 内存池大小
innodb_flush_method=O_DIRECT # 数据和redo刷写策略
innodb_log_buffer_size # redo buffer大小
innodb_file_per_table=1 # 独立表空间设置
innodb_data_file_path # 共享表空间文件配置
innodb_log_file_size # redo 文件的大小
innodb_log_files_in_group # redo 文件的个数
transaction_isolation # 隔离级别(RC,RR)

[mysql]
prompt=db01 [\d]>

SET SQL_LOG_BIN= 0;
SET GTID_PURGED='444c6d6c-0c49-11ea-b94f-000c29:1-10';

2.10 多实例
参考多实例配置文档.

  1. SQL基础及元数据获取
    3.1 SQL类型
    3.2 SQL_MODE
    ONLY_FULL_GROUP_BY
    select group_concat(name),sex,avg(age) from student group by sex;
    张三,李四 ,王五 男 20
    3.3 属性
    库属性:
    字符集 : charset = utf8(3) utfmb4(4)
    校对规则 :
    表属性:
    存储引擎 : engine = InnoDB
    字符集 : charset = utf8(3) utfmb4(4)
    注释 : Comment
    列属性:
    数据类型 : int ,tinyint , char() ,varchar(),enum(), datetime ,timestamp
    int : 4 Bytes: 1Bytes=8bit 00000000 ~ 11111111 =0-255, 0-232-1,-231~2^31-1
    char(10) : 最大多少字节 40; 定长
    varchar(10) : 最大多少字节 41; 变长

    约束 :
    PK : 非空切唯一,每个表只能有一个,聚簇索引,一般数字自增列.
    NOT NULL : 非空 ,建议每个列非空
    UNIQUE : 唯一
    其他属性: auto_increment , default ,comment

3.4 DDL
create
drop
alter

规范:
库:
不能大写,不能关键字,业务有关,不能数字开头,字符集.
表:
不能大写,不能关键字,业务有关,不能数字开头,不要太多字符,字符集,主键,非空,默认值,注释,数据类型,存储引擎.
总字符长度不要超过65535.....

表的结构更改: 业务低估,采用pt-osc.

3.5 DCL
grant
revoke

3.6 DML
insert
insert into t1(id,name,age)
values(1,'zs',18),(2,'ls',19);

说明:
1. 有多行录入,最好是批量
2. 特大数据行,假如100w数据,分成多份批量.

update
要加where条件.

delete
要加where条件
全表删除要用truncate
大表删除部分行
降低 "高水位线" ---> archiver table;

3.7 DQL
select

show

3.8 元数据获取
information_schma.tables
库 , 表相关的资产统计及监控

information_schma.columns
表的数据字典统计.

  1. 索引

4.1 MySQL索引类型
BTree
Rtree
FullTEXT
HASH
GIS

4.2 B树演变
B-TREE :
B+TREE : 叶子节点,有双向指针
B*TREE : 叶子和枝节点都有双向指针

优化了范围查找:> ,< ,>=, <=

4.3 MySQL 怎么构建BTREE
聚簇索引 : 一般是主键(ID),只能有一个
辅助索引 :

4.5 索引树高度
前缀
alter tables t1 add index idx(name(10));

例如: city表中,name列要做前缀索引,判断多少个字符合适
总行数:
select count(*) from world.city ; ----> 4079

提取name的前5个字符,
select count(distinct (left(name,5)) from world.city ; ---> 3554
select count(distinct (left(name,6)) from world.city ; ---> 3775
表结构设计
数据类型
归档表
分布式

4.6 联合索引
理论上可以减少回表查询的次数
(a,b,c) ---> a ab abc
原则:
1. 遵循最左原则,唯一值多的放在最左侧
2. 原则上不等值查询的列(>,<,>=,<=,like)
3. where order ,按照子句顺序创建索引

4.7 索引命令
alter table t1 add index idx_xxx(xxx);
alter table t1 drop index idx_xxx;

desc city;
show index from city;

4.8 explain
show processlist; -----> explain
slow log; ----> mysqldumpslow,pt-query-digest --> explain

type : ALL , index , range , ref ,eq_ref ,const(system)

key_len : 联合索引应用长度评估
(a,b,c)
数字:
最大储值长度+[1]
not null 没有
int 4 4+1
tinyint 1 1+1

字符串
字符集: utf8(3) utf8mb4(4)

char(10) 10字符集最大+[1]
varchar(10) 10
字符集最大+2+[1]

utf8(3)
not null 没有not null
char(10) 103 103+1
varchar(10) 103+2 103+2+1

utf8mb4(4)
not null 没有not null
char(10) 104 104+1
varchar(10) 104+2 104+2+1

extra
filesort =====> order by group by distinct 后的列有没有联合索引.

====================================
日常工作职责:

(1) 基础工作:
基本架构搭建
配置文件管理
MySQL故障处理
SQL语句审核(规范设计)
配合开发进行Schema设计
备份恢复

(2) 自动化工作
配合运维开发设计数据库自动化运维开发(启停数据库,用户管理,监控,SQL审核,工单,备份恢复,日志收集)
数据库资产统计

(3) 高级部分
数据库优化(安全,性能)
架构设计(高可用,读写分离,分布式架构)

(4) 专家级
MySQL 内核研究和二次开发

mysqld的相关图.png
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容