文章目录
Linux 安装MySql
MySql 下载地址
上传文件并解压缩
tar -xvf mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm --force --nodeps
在安装过程中遇到一个坑,报错信息如下:
[root@localhost src]# rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
警告:mysql-community-libs-5.7.35-1.el7.x86_64.rpm: 头V3 DSA/SHA256 Signature, 密钥 ID 5072e1f5: NOKEY
错误:依赖检测失败:
mysql-community-common(x86-64) >= 5.7.9 被 mysql-community-libs-5.7.35-1.el7.x86_64 需要
mariadb-libs 被 mysql-community-libs-5.7.35-1.el7.x86_64 取代
根据一个网友提供的解决方案进行处理:
检测出和mariadb有冲突,我们找出系统自带的mariadb,然后强制卸载。之后便可以继续正常安装。
# 首先查询一下mariadb是哪一个包
rpm -qa |grep mariadb
# 卸载冲突的包,加一个--nodeps系统就会强转卸载
rpm -e --nodeps mariadb-libs-5.5.65-1.el7.x86_64
确实找到了:
卸载完成后,重新执行下面命令:
rpm -ivh mysql-community-common-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.35-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.35-1.el7.x86_64.rpm --force --nodeps
安装的其余细节,参考我之前写的 MySql-5.7安装。
MySql 基础部分
where条件解析顺序
- MySQL:自左向右
- Oralce:自右向左
SQL 执行顺序:
写了注解的重点了解
- FROM:需要从哪个表检索数据
- ON
- JOIN
- WHERE:过滤表中数据的条件
- GROUP BY:将上面过滤出的数据分组
- HAVING:对上面已经分组的数据进行条件过滤
- SELECT:查询结果集中的哪个列,或列的计算结果
- DISTINCT
- ORDER BY:按照什么样的顺序查看返回数据
- LIMIT
MySql 常见的存储引擎(了解)
属性 | InnoDB | MyISAM |
---|---|---|
事务 | 支持 | 不支持 |
锁粒度 | 表、页和行 | 表级锁 |
存储 | 表空间 | 拆分文件 |
隔离等级 | 所有 | 无 |
适合场景 | 适合频繁修改以及涉及安全性比较高的应用 | 适合查询以及插入为主的应用 |
MySql 日志类型及作用
错误日志
show variables like '%log_error%';
日志地址
/var/log/mysqld.log
log_warnings 为0, 表示不记录告警信息。
log_warnings 为1, 表示告警信息写入错误日志。
log_warnings 大于1, 表示各类告警信息。
查询日志
查询日志会将所有数据库的操作都会记录(general log 通用日志),消耗I/O,默认不开
show variables like '%general_log%';
show variables like '%slow%';
索引
索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。
分类
- 普通索引:加快数据的查询速度
- 唯一索引:保证数据记录的唯一性
- 主键:一张表只能定义一个主键索引,用来标识唯一 一条记录
- 联合索引
索引的优缺点:
提高查询速度,降低插入,删除,更新表的速度(执行写的同时,还要操作索引文件)
适合建立的列
- 频繁查询的列
- 有外键关联的列
不适合建立的列
- 值变化少的列
- 频繁更新的
MySQL数据库分区表应用
HASH分区
- 根据MOD将分区键计算后分到制定表区域
- 可以基本平均的分布
- HASH分区键值必须是INT类型,或者通过函数转成INT
CREATE TABLE `customer_login_log` (
`customer_id` int(10) unsigned NOT NULL COMMENT '登录用户ID',
`login_time` datetime NOT NULL COMMENT '用户登录时间',
`login_ip` int(10) unsigned NOT NULL COMMENT '登录IP',
`login_type