1.MySQL中的事务是什么?有哪些特性?
事务是多个数据操作组成一个完整的事务单元,具有原子性不可分割。
ACID特性
原子性:一组操作要么全做,要么全不做;
一致性:一组事务执行前后,数据的完整性约束条件没有被破坏;
隔离性:同一时间,只允许一个事务请求同一数据,该事物对这一操作上锁,释放之后其他事务才可操作这一数据;
持久性:一组操作完成之后,事务对数据的更新保存到数据库中,不能回滚。
2.这些事务的特性是由什么来实现的?
A是由undo log实现,[回滚日志]逻辑日志,回滚事务时,可以恢复到修改之前的数据;
C是由逻辑代码层面保证的;
I是由MVCC来实现的,[多版本并发控制],在执行过程中会记录数据快照;
D是由redo log实现的,[重做日志]物理日志,对磁盘数据进行修改。
MVCC解决了读写冲突,实现了读写并行,提升了事务的性能
3.事务并发会产生那些问题?事务隔离级别有哪些?
脏读:读到其他数据未提交的数据;
不可重复读:多次读取相同的数据,得到的结果不一致;update、delete
幻读:查询条件相同,多次读取结果不一致;insert
未提交读:允许脏读,可能读取到其他回话中未提交事务修改的数据;
已提交读:只能读取到已经提交的数据;
可重复读:消除了不可重复读,但还存在幻读;
可串行化:完全串行的读,每次读多需要获取表及共享锁。
4.数据库为什么要建索引?索引的优缺点?
创建索引可以大大提高系统的性能。
优点:
第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;
第二,可以大大加快 数据的检索速度,这也是创建索引的最主要的原因;
第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义;
第四,在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间;
第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
缺点:
第一,创建索引和维护索引要耗费时间,这种时间随着数据 量的增加而增加。
第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。
第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度
5.MySQL索引有哪些?
主键索引:主键索引是一种特殊的唯一索引,不允许有空值
普通索引或者单列索引
多列索引(复合索引):复合索引指多个字段上创建的索引,只有在查询条件中使用了创建索引时的第一个字段,索引才会被使用。使用复合索引时遵循最左前缀集合
唯一索引或者非唯一索引
空间索引:空间索引是对空间数据类型的字段建立的索引,MYSQL中的空间数据类型有4种,分别是GEOMETRY、POINT、LINESTRING、POLYGON。
6.MySQL有什么存储引擎?
InnoDB 引擎
灾难恢复性好、支持事务、使用行级锁、支持外键关联、支持热备份
实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且会自动创建散列索引以加快数据的获取
MyISAM引擎
不支持事务、使用表级锁,并发性差、主机宕机后,MyISAM表易损坏,灾难恢复性不佳、可以配合锁,实现操作系统下的复制备份、迁移
MEMORY 存储引擎
提供内存表,也不支持事务和外键。显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果。
使用表级锁,虽然内存访问快,但如果频繁的读写,表级锁会成为瓶颈
只支持固定大小的行。Varchar类型的字段会存储为固定长度的Char类型,浪费空间
不支持TEXT、BLOB字段。当有些查询需要使用到临时表(使用的也是MEMORY存储引擎)时,如果表中有TEXT、BLOB字段,那么会转换为基于磁盘的MyISAM表,严重降低性能
服务器重启后数据会丢失,复制维护时需要小心
7.MySQL中InNoDB和Mysiam的特点?
MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。
MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。
8.SQL语句执行顺序?
From,on,join,where,group by,select,distinct,order by,limit
9.如何优化数据库性能?
(1)减少数据访问:创建并使用正确的索引;只通过索引访问数据;优化SQL执行计划
(2)返回更少的数据:数据分页处理;只需返回需要的字段
(3)减少交互次数:batch DML;In List;设置Fetch Size;使用存储过程;优化业务逻辑;使用ResultSet游标处理记录
(4)减少数据库服务器CPU运算:合理使用排序;减少比较操作;大量复杂运算在客户端处理
(5)利用更多的资源:客户端多进程并行访问;数据库并行处理。
10.MySQL存储引擎中索引的实现机制?
B+树,数据库系统或文件系统使用的B+树作出了改动,增加了顺序访问指针。提高区间访问的性能。
索引不可用Hash表。
11.数据库事务的几种粒度?
粒度,是细化的程度。锁的粒度越大,则并发性越低且开销大;锁的粒度越小,则并发性能高且开销小。
(1)行锁,粒度最小。
(2)页锁,25个行锁可升级为一个页锁
(3)表锁,
(4)数据库锁,防止任何事务和用户对此数据库访问。
可能不全,欢迎补充。
1275

被折叠的 条评论
为什么被折叠?



