当前位置:Gxlcms > 数据库问题 > centos mysql 实战 第三节课 MySQL里的对象 mysql体系结构 mysql日志 数据类型

centos mysql 实战 第三节课 MySQL里的对象 mysql体系结构 mysql日志 数据类型

时间:2021-07-01 10:21:17 帮助过:4人阅读


今天第一个: MySQL里的对象

查看当前有那些数据库:
show databases;

drop database test;
truncate table mysql.db;


mysql里view当成Table对待了,没有单独的命令能备份视图,只能备份表

information_schema 
字典库

performance_schema 
性能相关的字典库

MySQL是一个面向存储引擎解决方案的DB
show engines;

还有一些show engines;没有列出来的引擎
tokudb
inforbright/InfiniDB OLAP ,列式存储引擎
mariadb dblink : connect引擎

Memory引擎的坑
Memory 引擎无持久化
对于Memory内存表,数据库重启时,系统会自动发起一个truncate table mem_tb
对于内存表,复制中最好忽略他

mysql.server -> mysqld_safe-> mysqld

 

 


 

mysql体系结构

接入层
SQL接口, 解析,优化,Cache/buffer
存储引擎
文件系统 

 

 技术分享

 

 

 接入层: 技术分享
认证, 线程
MySQL里每个连接都是一个线程 

技术分享

 

 

 

一个系统的并发度是有限的
线程数太多,反而系统的处理能力下降
随着连接数上升,反尔性能下降
<5.1 以下的 64个连接 
5.5 128
<128个连接
5.6 < 200  个连接
5.7 <200 ,300个连接

案例

吴炳锡(82565387) 20:55:20
LVS 挂了5台WEB, 后端: 1组Cache,三组DB
吴炳锡(82565387) 20:56:06
10台
单组DB上连接数达到6千多

解决方法:引入中间件
收费:kingshard 
免费 :thread-pool(percona, mariadb 属于自带的免费的)

 


server层的核心处理层
技术分享
SQL interface ; SQL接口

Struct
解析
得到路径
Cache & Buffer

 

企业接口管理工具

技术分享

 

 

再往下一层就是存储引擎

Innodb

存储文件系统之上
吴炳锡(82565387) 21:04:52
跑MySQL XFS成为标配

技术分享

 

 


 


mysql日志

error log
generl log
binary log 
slow log

 

在排查DB的问题时,我要知道MySQL有哪些日志
Error log 错误日志
吴炳锡(82565387) 21:09:47
只看[ERROR]和[WARNING]
[Note] 忽略

吴炳锡(82565387) 21:1
数据库出错了,肯定会报错误日志
1. 拿这个错误日志来搜源码,在Linux机器上
Google
把源码附近的注释看看

2. 遇到错误日志
http://bugs.mysql.com/
A230-彭许生-深圳(10031145) 21:19:13
搜问题的时候,偶然进去

general log 常规日志,只适合开发环境打开
所有与mysql的交互都会记录日志,默认是没打开的
全局级别
set global general_log = on;
session级别 开发测试环境最好用session级别
set general_log = on ;
general log用来分析mysqldump的原理mydumper 原理 innbackupex的原理
general log位置

技术分享

 

binary log 
数据库的所有写操作都会记录到binary log里
数据的库的复制也是使用的binary log 
提取binlog统计每张表的insert,update次数



slow log 
execute_time > long-query-time 就会记录
long_query_time = 10s
建议改成1s
注意:
DML : INSERT, UPDATE, DELETE在处理中锁等待的时间不记录
SELECT锁等待的时间会记录
MySQL代码注释有的



 


 

数据类型
为了让数据库跑的更快,我们来选择一个合适的数据类型

实质是干的什么
节省IO
数据库SQL调优
99%都是基节省IO

SAS盘
吴炳锡(82565387) 21:50:02
15000转 每分钟转速,Revolutions per minute 每秒250转

IOPS 每秒
随机IO IOPS
吴炳锡(82565387) 21:54:49
实际,大概只有:150个IOPS

pcie 卡 10-45W IOPS

mysql的data page是16k
Linux的文件系统里的block 4k
扇区:512字节
吴炳锡(82565387) 22:00:26
iostat 里IOPS是读的raid卡缓存在工作
如果你的Raid有缓存的话,别省那10元钱的raid卡电池

raid卡 512M 价格1K-2K
raid卡 1G 价格3-4K

技术分享

特别注意类型的溢出
tinyint  

吴炳锡(82565387) 22:06:50
tinyint
128 
0-256
256- 300 
吴炳锡(82565387) 22:07:28
刷积分
5.1 ,5.5 
吴炳锡(82565387) 22:08:34
每个类型占用多少字节
吴炳锡(82565387) 22:09:14
如果将来需要我们计算行长,就需要了

int(N) 这个N表示什么?
zerofile 显示宽度,如果不用zerofile,那么后面加(N)无意义
int 42亿 10个数字最多int(10),即使int(20)也只能显示10位


吴炳锡(82565387) 22:16:12
单表能支撑放42亿数据吗
Bigint

(product)root@localhost [test]> insert into t1(id, name) values( pow(2,31)-1,‘wubx‘);
Query OK, 1 row affected (0.01 sec)

(product)root@localhost [test]> select * from t1;
+------------+------+
| id | name |
+------------+------+
| 2147483647 | wubx | 没有用unsigned
+------------+------+
1 row in set (0.00 sec)

(product)root@localhost [test]> insert into t1(id, name) values( pow(2,32),‘wubx‘); 
ERROR 1264 (22003): Out of range value for column ‘id‘ at row 1


吴炳锡(82565387) 22:22:28
固定小数点类型
吴炳锡(82565387) 22:22:37
decimal (decimal是四舍五入)
salary decimal(8,2)
decimal(M,N) M表示最大长度,也指字节
N表示小数点
M的最大值65
N<M
解决方法:银行里存钱全是用分为单位存储的,不会有小数点


吴炳锡(82565387) 22:28:22
decimal(10,0)
吴炳锡(82565387) 22:28:47
10字节
有没有替代方案呢
方案:int(10) 两个整数型的

 

 

 

 

 

f

centos mysql 实战 第三节课 MySQL里的对象 mysql体系结构 mysql日志 数据类型

标签:

人气教程排行