数据库常考点

MYSQL
第一常用数据类型:
整形int,Bigint,
小数float,double
字符串:varchar,char,test
枚举:enum
日期时间:timesstamp
索引优缺点:
可以加快访问速度
创建维护索引需要欸外开销,以及空间
数据库事务性:事物是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位
四大特性:原子性,一致性,隔离性,持久性
原子性:事物最小执行单位,要么全做要么都不做
如何保证:binlog记录数据库和表的变更
relog:写完在内存,在写到relog,然后写到磁盘,
undolog:逻辑日志(insert一个数据,他就记录为delete一个数据)
一致性:多个事务对同一数据读取结果应该是一样的
如何保证:乐观悲观锁,
共享锁:加了共享锁,其他线程只能读
排他锁:加了排他锁,其他线程不能读也不能修改。
使用多个版本的数据库(mvcc控制)
隔离性:并发访问数据库,互相不干扰,
如何保证:共享锁
持久:事务提交后影响是永久的
脏读:一个事务正在更新数据,另一个读取了,结果事物更新回滚了,后面那个读取的就是有问题的数据。
解决方式:修改添加排他锁(读取已提交二级隔离)
不可重复读:在一个事物的两次查询结果不一致
解决方式:读取添加共享锁,写数据添加排他锁
幻读:也是前后两次读取数据不一致
解决方式:检索范围为只读,
(重复读注重点在修改,幻读重点在于增删)
四个隔离级别:
读取未提交:
允许读取尚未提交的的事物,脏读,幻读,不可重复读都会出现。
1,事务对当前被读取的数据不加锁;
2,事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级共享锁,直到事务结束才释放。

读取已提交:
允许读取并发事物以及提交的数据:脏读可以避免,但是幻读,不可重复的读无法避免
1,事务对当前被读取的数据加 行级共享锁(当读到时才加锁),一旦读完该行,立即释放该行级共享锁;
2,事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级排他锁,直到事务结束才释放。

可重复读:
对同意字段,多次读取读取结果都是一至的,除非以及被修改了,幻读仍然可以发生,
1,事务在读取某数据的瞬间(就是开始读取的瞬间),必须先对其加 行级共享锁,直到事务结束才释放;
2,事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加 行级排他锁,直到事务结束才释放。

可串行化:
完全服从acid,所有事物必须依次执行,不会互相干扰,可以防止脏读,不可重复读以及幻读,
1,事务在读取数据时,必须先对其加 表级共享锁 ,直到事务结束才释放;
2,事务在更新数据时,必须先对其加 表级排他锁 ,直到事务结束才释放。

事物的隔离性主要就是由锁机制以及并发调度
乐观锁:假设不会发生冲突,只在提交操作的时候检查是否违反数据库完整性的操作(读)
悲观锁:假设会发生冲突屏蔽一切可能违反数据完整性的操作,在查询玩数据的时候就把事物锁起来,直到提交事物(写)
主要操作:
create database databasename
create table person{ …}
drop index indexName on tableName
drop table tableName
drop database dbName
t添加修改删除列
alter table tableName
{
add lieName lietype//加
drop column lieName//删除
alter column lieNmae dataType
}

查询语句:
select * into newTableName [in dbName ]
select xxx from dbName where lieNmae = xxx
select * from dbName

添加:
insert into biaoNmae values(,)
inset into tableName(lie,) values(data,)
更新:
update biaoName lieName = ’ xx’ whrer lieNmae = ‘xx’
删除:
delete from biaoName where lieName = value
delete from tableName
约束类型:
不能为空,主键,不可重复,不可链接,范围控制
优化:
第一是查询就建立索引,缓存,切分表,读写分离
如果要联合查询,建立中间表,吧要查询的数据放到重点表来。增加一定的冗余,,虽然范式规定最好不要冗余,但是冗余能够提高效率
sql生命周期
与数据库建立链接,数据库进程请求拿到sql,解析执行sql,读取数据到内存进行逻辑处理,通过链接发生到客户端,关闭连接,释放资源。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值