数据库常见面试题解析

这篇博客涵盖了数据库的基础知识,包括关系型数据库和非关系型数据库的分类,重点讨论了MySQL的相关内容,如事务的ACID特性、InnoDB的事务实现、索引优化、分页、触发器和存储过程的使用场景。还涉及到了数据库优化、MySQL调优策略、分库分表以及数据库性能提升的方法。此外,文章也提及了非关系型数据库Redis的基本概念和特性。
摘要由CSDN通过智能技术生成

文章目录


数据库的分类及常用的数据库

数据库分为:关系型数据库和非关系型数据库

  • 关系型:mysql oracle sqlserver等
  • 非关系型:redis,memcache,mogodb,hadoop等

关系型数据库

mysql:索引 .索引优化,锁
数据库索引

Mysql选用B+树这种数据结构作为索引,可以提高查询索引时的磁盘IO效率,并且可以提高范围查询的效率,并且B+树里的元素也是有序的。

简单介绍一下关系数据库三范式?

范式就是规范,就是关系型数据库在设计表时,要遵循的三个规范。
要想满足第二范式必须先满足第一范式,要满足第三范式必须先满足第二范式。

  • 第一范式(1NF)列数据的不可分割(原子性)
  • 二范式(2NF)主键
  • 第三范式: 要求一个数据库表中不包含已在其它表中的非主关键字信息。(外键)
  • 反三范式,有的时候为了效率,可以设置重复或者可以推导出的字段.
    订单(总价)和订单项(单价)

事务四个基本特征或 ACID 特性。

事务是并发控制的单位,是用户定义的一个操作序列。这些操作要么都做,要么都不做,是一个不可分割的工作单位。

原子性Atomic 事务内操作不可分割要么…要么…
一致性Consistency 数据的完整性必须保持一致(转账)后面失败了要对前面的操作进行回滚
隔离性 Isolation 一个事务开始,其他事务无法干扰
持久性 Durability 事务开始 不能终止

InnoDB对事务的实现方式

利用回滚日志(undo log) 和 重做日志(redo log) 两种表实现事务,并实现 MVCC (多版本并发控制);
查询需要对资源加共享锁(S),数据修改需要对资源加排他锁(X)

利用undo log使读写不阻塞,实现了可重复读。当一个事务正在对一条数据进行修改时,该资源会被加上排它锁。在事务未提交时对加锁资源进行读操作时,读操作无法读到被锁资源,通过一些特殊的标志符去读undo log 中的数据(过程很复杂),这样读到的都是事务执行之前的数据。

mysql数据库的默认的最大连接数?

my.ini
在这里插入图片描述

说一下msyql的分页?Oracle的分页?

为什么需要分页?在很多数据是,不可能完全显示数据。进行分段显示.
Mysql是使用关键字limit来进行分页的 limit offset,size 表示从多少索引去多少位.

String sql = 
	"select * from students order by id limit " + pageSize[每页显示]*(pageNumber-1)[多少页] + "," + pageSize;

Oracle的分页,要使用三层嵌套查询(百度)。

String sql = 
	 "select * from " +  
	 (select *,rownum rid from (select * from students order by postime desc) where rid<=" + pagesize*pagenumber + ") as t" + 
	 "where t>" + pageSize*(pageNumber-1);

简单讲一下数据库的触发器的使用场景?

简单讲一下数据库的存储过程的使用场景?

用jdbc怎么调用存储过程?

加载驱动
获取连接
设置参数
执行
释放连

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值