互联网Java工程师面试题·MySQL 篇·第二弹

目录

26、锁的优化策略

27、索引的底层实现原理和优化

28、什么情况下设置了索引但无法使用

29、实践中如何优化 MySQL

30、优化数据库的方法

31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

32、数据库中的事务是什么?

33、SQL 注入漏洞产生的原因?如何防止?

34、为表中得字段选择合适得数据类型

35、存储时期

36、对于关系型数据库而言,索引是相当重要的概念,请回答

有关索引的几个问题:

1、索引的目的是什么?

2、索引对数据库系统的负面影响是什么?

3、为数据表建立索引的原则有哪些?

4、什么情况下不宜建立索引?

37、解释 MySQL 外连接、内连接与自连接的区别

38、Myql 中的事务回滚机制概述

39、SQL 语言包括哪几部分?每部分都有哪些操作关键字?

40、完整性约束包括哪些?

41、什么是锁?

42、什么叫视图?游标是什么?

43、什么是存储过程?用什么来调用?

44、如何通俗地理解三个范式?

45、什么是基本表?什么是视图?

46、试述视图的优点?

47、 NULL 是什么意思

48、主键、外键和索引的区别?

49、你可以用什么来确保表格里的字段只接受特定范围里的值?

50、说说对 SQL 语句优化有哪些方法?(选择几条)


26、锁的优化策略

1 、读写分离
2 、分段加锁
3 、减少锁持有的时间
4. 多个线程尽量以相同的顺序去获取资源
不能将锁的粒度过于细化,不然可能会出现线程的加锁和释放次数过多,反而效率不如一次加一把大锁。

27、索引的底层实现原理和优化

B+ 树,经过优化的 B+
主要是在所有的叶子结点中增加了指向下一个叶子节点的指针,因此 InnoDB 建议为大部分表使用默认自增的主键作为主索引。

28、什么情况下设置了索引但无法使用

1 、以 “%” 开头的 LIKE 语句,模糊匹配
2 OR 语句前后没有同时使用索引
3 、数据类型出现隐式转化(如 varchar 不加单引号的话可能会自动转换为 int 型)

29、实践中如何优化 MySQL

最好是按照以下顺序优化:
1、 SQL 语句及索引的优化
2、数据库表结构的优化
3、系统配置的优化
4、硬件的优化

30、优化数据库的方法

1 、选取最适用的字段属性,尽可能减少定义字段宽度,尽量把字段设置 NOTNULL
例如 省份 、’性别 最好适用 ENUM
2 、使用连接 (JOIN) 来代替子查询
3、适用联合 (UNION) 来代替手动创建的临时表
4、事务处理
5、锁定表、优化事务处理
6、适用外键,优化锁定表
7、建立索引
8、优化查询语句

31、简单描述 MySQL 中,索引,主键,唯一索引,联合索引的区别,对数据库的性能有什么影响(从读写两方面)

        索引是一种特殊的文件 (InnoDB 数据表上的索引是表空间的一个组成部分 ) ,它们包含着对数据表里所有记录的引用指针。
        普通索引 ( 由关键字 KEY INDEX 定义的索引 ) 的唯一任务是加快对数据的访问速度。
        普通索引允许被索引的数据列包含重复的值。如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字 UNIQUE 把它定义为一个唯一索引。也就是说,唯一索引可以保证数据记录的唯一性。
        主键,是一种特殊的唯一索引,在一张表中只能定义一个主键索引,主键用于唯一标识一条记录,使用关键字 PRIMARY KEY 来创建。
        索引可以覆盖多个数据列,如像 INDEX(columnA, columnB) 索引,这就是联合索引。
        索引可以极大的提高数据的查询速度,但是会降低插入、删除、更新表的速度,因为在执行这些写操作时,还要操作索引文件。

32、数据库中的事务是什么?

        事务( transaction )是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。
事务特性:
1 、原子性:即不可分割性,事务要么全部被执行,要么就全部不被执行。
2 、一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态
3 、隔离性。在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务,
4 、持久性。事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。
或者这样理解:
        事务就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过 ACID 测试,即原子性,一致性,隔离性和持久性。

33SQL 注入漏洞产生的原因?如何防止?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时光の尘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值