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

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

上两节课
1. MySQL的安装
2. MySQL启动方式

MySQL里的对象

今天第一个: 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)[email protected] [test]> insert into t1(id, name) values( pow(2,31)-1,‘wubx‘);
Query OK, 1 row affected (0.01 sec)

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

(product)[email protected] [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

时间: 2024-12-20 01:19:08

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

centos mysql 实战 第三节课

centos mysql  实战  第三节课 上两节课1. MySQL的安装2. MySQL启动方式 今天第一个: MySQL里的对象 查看当前有那些数据库:show databases; drop database test;truncate table mysql.db; mysql里view当成Table对待了,没有单独的命令能备份视图,只能备份表 information_schema 字典库 performance_schema 性能相关的字典库 MySQL是一个面向存储引擎解决方案的D

centos mysql 实战 第十二节课 备份恢复 备份方案 备份可以分为几种形式 mysqldump 在不同版本里对性能会不会有影响? mysqldump 的用户需要什么权限 mysqldump 支持Where条件 备份评估

centos mysql 实战 第十二节课  备份恢复  备份方案  备份可以分为几种形式  mysqldump 在不同版本里对性能会不会有影响?   mysqldump 的用户需要什么权限   mysqldump 支持Where条件  备份评估 阿里云Percona-live 2016-4 基于Innodb物理复制 mysql5.7没有线程池,需要用percona版本mysql才有,percona的定位是做免费的企业版mysql mysql5.6的memcached插件只是提供memcache

centos mysql 实战 第九节课

f

centos mysql 实战 第八节课

f

centos mysql 实战 第二十二节课

f

centos mysql 实战 第六节课 字符集

centos mysql 实战 第六节课    字符集 一定要研究清楚mysql安装脚本 字符集 乱码数据迁移1. 理解字符集怎么会事2. 不同的字符集进行转换 什么是字符集gbk , utf8 gb2312 latin1 一套符号编码规则 字符串都必须有相应的字符集,除了二进制没有字符集 校验字符集的概念流式传输 多字节latin1 单字节gbk 2字节utf8 3字节校验字符集的概念, 字为单位归类的方法,就是3类xxx_bin 以二进制形式存储区分大小写 SHOW CHARACTER SE

centos mysql 优化 第二十三节课

centos mysql  优化  第二十三节课 f

centos mysql 优化 第十三节课

centos mysql  优化  第十三节课 MySQL索引 主键值不能重复,也不能是NULLunique key + not null 业务主键用唯一索引代替 案例:某InnoDB表,没有自增列主键,使用一段时间后,产生碎片,重整表空间后,从13G变成了9G重整表空间的3种方法alter table xx engine=innodb;optimize table xx;create primary key on id 加主键聚集索引 mysql5.6之后依然无法online ddl做 加主键

centos mysql 实战 第七节课

mysql常见错误排查 1. client工具mysqlsqlyogmysqldump(mysqlbinlog) 2. mysql binlog 介绍 mysql 命令 mysql command not found 环境变量 echo $PATH 用绝对路径来调用/usr/local/mysql/bin/mysql ===============================================啊铭去除环境变量\cp = /bin/cp\cp 2.txt eee/# cd eee