MYSQL狂神 学习
发布日期:2021-05-07 00:40:07 浏览次数:18 分类:原创文章

本文共 1711 字,大约阅读时间需要 5 分钟。

数据库

show create database warehouse;show create table user;

数据库引擎

MyISAM InnoDB
事务支持 不支持 支持
数据行锁定 不支持 支持
外键 不支持 支持
全文索引 支持 不支持
表空间的大小 较小 较大,约为2被

常规使用操作

  • MYISAM 节约空间,速度较块
  • INNODB 安全性高,支持事务,支持外键(多表多数据操作)

在物理空间存在的位置

所有的数据库文件都存在 data 目录下

本质还是文件的存储!

MySQL 引擎在物理文件上的区别

  • InnoDB 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata文件
  • MYISAM 对应文件
    • *.frm -表结构的定义文件

分页 limit 和排序 order by

为什么要分页?

1、缓解数据库压力,给人体验更好, 瀑布流

网页应用:当前页,总的页数,页面大小

每页只显示五条数据

语法: limit 起始值,页面的大小

limit 0,5 0~5

limit 5,5 5~10

数据库级别的MD5 加密

MD5 不可逆,具体值的MD5是一样的

MD5 破解网站的原理,背后有一个字典,MD5加密后的值,加密前的值

加密

update user set password=MD5(pwd) where id=1

如何效验:将用户传进来的密码,进行md5加密,对比加密后的值

事务

要么都成功,要么都失败

事务原则:ACID原则

原子性 一致性 隔离性 永久性

set autocommit = 0;  -- 关闭自动提交start transaction事务commit  -- 提交事务   永久保存rollback   -- 没有提交还可以回滚恢复set autocommit = 1  -- 开启自动提交
try{       事务     commit}catch{       rollback}

事务的隔离级别

脏读 : 指一个事务读取了另一个事务未提交的数据

不可重复读 : 在一个事务读取表中的一行数据,多次结果不一样(不一定是错误,只是某些场合不适用)

幻读 : 读取了别人刚插入的数据,导致前后读取不一致

执行事务

mysql 是默认开启事务自动提交的

关闭自动提交

set autocommit = 0

索引

索引是帮助mysql高效获取数据的数据结构

索引:数据结构

索引的分类

主键索引只能有一个,唯一索引可以有多个

  • 主键索引 primary key
    • 唯一的标识,不能重复
  • 唯一索引 unique key
    • 避免出现重复的列,唯一索引可以重复,多个列都可以标识为唯一索引
  • 常规索引 key/index
    • 默认的,用index 或者 key来设置
  • 全文索引 FullText
    • 在特定的数据库引擎下才有
    • 快速定位数据

索引的使用

1、创建表的时候给字段 加索引

2、 创建完毕后,加索引

-- 添加全文索引alter table test add fulltext index "test_index"(column1);-- 分析sql 执行的状况explain 

插入100万条数据

索引在小数据量的时候,用处不大

在大数据量的使用,效果很好

索引会降低增删改的效率,但是会提高查的速度,利大于弊

索引一般加载常用来查询的字段上

Btree: innodb 默认底层

权限管理

数据库连接池

数据库连接 — 执行完毕 — 释放

连接----释放 十分浪费资源

池化技术:准备一些预先的资源,过来就连接预先准备好

类比:银行 你去取钱 ------开门----取完钱-----关门 十分的慢

池化技术: 开门-----业务员-----等待----服务----- 最后关门

最小连接数:10 业务员的个数

最大连接数:100 业务最高承载上线

连接数全部用完,排队等待,可能会等待超时

编写连接池 ,只需要实现DataSource接口

开源数据源实现

  • DBCP
  • C3P0
  • Druid : 阿里巴巴

使用这些数据库连接池之后,就不需要编写连接数据库的代码了!!!

上一篇:23种设计模式 GoF23
下一篇:mybatis 大于小于

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年03月31日 21时20分22秒