数据库

作者: bangbang2 | 来源:发表于2022-01-18 21:50 被阅读0次

1、主从复制

在主数据库写,在从数据库来读,适用在主数据库被锁表的时候
1:master数据库将数据的改变记录在binlog中
2.slave数据库向master探测,如果发生改变,就会创建一个io进程
[图片上传失败...(image-473223-1642513862753)]

2、为什么不用b树,用b+树

b树

img
b+树
img
1:b+树只有叶子节点会存放数据,b+树的叶子节点有一条链、都是从根节点到叶子节点查找,b+树符合局部性原理 image.png

索引为什么会失效

两个列都建立索引,两个列索引进行比较,这样会很慢呐

image.png

某一列元素存在null值的

image.png image.png

like通配符 ,如果 %明----这样会导致索引失效

image.png

innodb和myisam的区别

mysql是5.5之前的数据库引擎默认是myisam,现在在innodb

二者的区别:

1:myisam只支持表级锁, innodb支持表级锁和行级锁,默认是行级锁

2:innodb支持事务,回滚,崩溃恢复,外键和acid,而myisam数据库只强调性能,都不支持

3:innodb支持mvcc,多版本并发控制,而myisam不支持

数据库慢的时候如何优化

偶尔很慢:

1:刷新脏页
数据库的数据先在内存,然后同步到redo log中,在空闲的时候,再将redo log写入到磁盘中,如果redo log要满了,就立即要写入到磁盘里,这时候就会很慢


image.png

2:拿不到锁


image.png

一直很慢

1:没有建立索引
2:有索引,但是没有走索引
3:表数据太大,没有分库分表

mysql中自增id可以用做uid吗

uuid的缺点
1:uuid是无序的,查找的时候得分页,比较慢
2:uuid占用的空间比较大

数据库优化的建议:

1:都用innodb
2:字符集统一为是utf-8
3:单表数据量小于500w
4:优先选存储最小的数据类型
5:列定义为not null ,因为null需要单独花空间去存
6:禁止select *
7:不要join太多的表
8禁止赋予super权限

如何定位和优化慢查询?

如何定位?
1:查看慢查询日志,来看已经执行完的慢查询,long_query_time是自己去设置的


image.png
image.png
image.png

2:show processlist 查看正在执行的慢查询
3:用explain方法来分析
在sql语句前加上explain,就会得到mysql的执行计划


image.png
当type类型为index和all就需要进行优化,因为这样是全表搜索
image.png
如何优化?
没有索引就建立索引,避免出现不走索引的情况出现

索引建立的原则

1:尽量要建立唯一性索引,这样的效率高
2:最左前缀匹配原则
遇到范围查询就会停止匹配,尽量保证联合索引的范围查询出现在最后


image.png

3:为经常排序、分组的元素建立索引
4:为常要查询的元素建立索引
5:限制索引的数目
6:尽可能用数据类型比较小的索引
7:删除不用的索引
8:索引不参与计算

相关文章

  • MySQL数据库day01

    系统数据库 ​​​ 创建数据库 ​​​ ​​​ ​​​ ​​​ 查看所有数据库 使用数据库 修改数据库 删除数据库...

  • 数据库操作

    创建数据库: 选择数据库: 查看数据库: 修改数据库: 删除数据库:

  • Ubuntu操作mysql数据库命令

    一、连接数据库 连接本地数据库 退出数据库 二、操作数据库 创建数据库 显示数据库 删除数据库 连接数据库 查看状...

  • 4-14

    创建数据库 createdatabase数据库名称; 删除数据库 dropdatabase数据库名称; 查看数据库...

  • [后端开发] Mysql学习笔记

    1.0 数据库 创建数据库 查看所有数据库 删除数据库 切换数据库名 查看正在使用的数据库 2.0 数据库表 创...

  • 2020最新最全数据库系统安全

    数据库标识与鉴别 数据库访问控制 数据库安全审计 数据库备份与恢复 数据库加密 资源限制 数据库安全加固 数据库安...

  • 2020-01-05 sql基本概念

    数据库用来储存数据。 数据库的种类大致有:层次数据库、关系数据库、面向对象数据库、XML数据库、键值数据库。 关系...

  • Mysql数据库基本操作

    连接数据库 退出数据库 查看数据库版本 显示数据库时间 查看当前使用的数据库 查看所有数据库 数据库备份 导入数据...

  • mysql命令行操作

    准备 登陆 数据库操作 查看现有数据库 创建数据库 删除数据库 查看数据库 使用数据库 查看当前数据库 表操作 新...

  • 1.7.1 MySQL数据库学习

    1. 数据库命令行学习 进入数据库 创建数据库 查看数据库列表 删除数据库 使用数据库 查看当前数据库 2. 表 ...

网友评论

      本文标题:数据库

      本文链接:https://www.haomeiwen.com/subject/aorlhrtx.html