| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> MySQL篇 -> 正文阅读 |
|
[大数据]MySQL篇 |
1、数据库的三范式是什么 第一范式:列不可再分。 第二范式:行可以唯一区分,主键约束。 第三范式:表的非主属性不能依赖与其他表的非主属性,外键约束,且三大范式是一级一级依赖的 第二范式建立在第一范式上,第三范式建立在第一第二范式上。 2、MySQL数据库引擎有哪些 ?mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求 Innodb:行级锁,提供了具有提交,回滚,崩溃回复能力的事务安全,支持自动增长列。支持外键约束,并发能力强,处理效率相对会差一点 Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,检索效率高,但不适合精确查找。 MERGE:是一组MYISAM表的组合 3、说说InnoDB与MyISAM的区别?? 1.InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务务,自动提 2.InnoDB支持外键,,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败; 3.InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。 4. InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用 4、数据库的事务 5、索引是什么 高效获取数据的数据结构,能加快数据库的查询速度 索引往往是在存储在磁盘上的文件中的,我们通常所说的索引,包括聚集索引,覆盖索引,组合索引,前缀索引,唯一索引,没有特别说明,默认使用B+树的索引 6、SQL优化手段有哪些 1、查询语句中不要使用select * 2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代 3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代 4、or 的查询尽量用 union或者union all 代替(在确认没有重复数据或者不用剔除重复数据时, 5、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 7、简单说一说drop、delete与truncate的区别 SQL中的drop、delete、truncate都表示删除,但是三者有一些差别 delete和trunate只删除表的数据不删除表的结构,速度一般来说: drop> truncate >delete delete 8、什么是视图 视图是一种虚拟的表,具有物理表相同的功能,可以对视图进行增,改,查,操作,视图通常是有一个表或者多个表的行或列的子集,对视图的修改不影响基本表,他使得我们获取数据更容易,相对于多表查询 9、并发事务带来哪些问题? 脏读:当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据,因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据就是“脏数据”,依据“脏数据”所做的操作可能是不正确的 丢失修改:指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改,因此称为丢失修改。 不可重复读:指在一个事务内多次读同一数据,在这个事务还没有结束时,另一个事务也访问了该数据,那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样,这就发生了在一个事务内两次读到的数据是不一样的情况,因此成为不可重读 幻读:幻读与不可重复读类似,他发生在一个事务(t1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时,在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。 不可重复读和幻读区别: 不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现增多或者减少了 10,事务隔离级别有哪些?MySQL的默认隔离级别是? SQL 标准定义了四个隔离级别: mysql InnoDB存储引擎的默认支持的隔离级别是REPLACE-READ(可重复读)? 所以说InnoDB 存储引擎的默认支持的隔离级别是 REPEATABLEREAD(可重读) 已经可以完全保证事务的隔离性要求,即达到了 SQL标准的 SERIALIZABLE(可串行化) 隔离级别。因为隔离级别越低,事务请求的锁越少,所以大部分数据库系统的隔离级别都是READ-COMMITTED(读取提交内容) ,但是你要知道的是InnoDB 存储引擎默认使用REPEAaTABLE-READ(可重读) 并不会有任何性能损失。 InnoDB存储引擎在分布式事务的情况下一般会用到SERIALIZABLE(可串行化)隔离级别 11.索引有什么有优缺点? 优点:提高数据的索引速度,降低数据库IO成本 使用索引的意义就是通过缩小表中需要查询的记录的数目从而加快搜索的速度 降低数据排序的成本,降低cpu消耗,索引之所有查的快,是因为先将数据排好序,则正好降低了排序的成本。 缺点:占用存储空间,索引实际上也是一张表,记录了主键与索引字段,一般以索引文件的形式存储在磁盘上。 降低更新表的速度:表的数据发生变化,对应的索引也需要一起变更 从而减低的更新速度,否则索引指向的物理数据可能不对,这也是索引失效的原因之一 在 MySQL 5.1 及之前的版本中,MyISAM 是默认的存储引擎,而在 MySQL 5.5 版本以后,默 InnoDB 是事务型引擎,当事务异常提交时,会被回滚。同时,InnoDB 支持行锁。此外, |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 8:25:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |