
本文共 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 : 阿里巴巴
使用这些数据库连接池之后,就不需要编写连接数据库的代码了!!!
发表评论
最新留言
关于作者
