首页 > 数据库 >数据库-八股文

数据库-八股文

时间:2023-07-07 22:55:13浏览次数:31  
标签:事务 八股文 数据库 查询 索引 版本 数据 上锁

  1. 索引的基本原理-√
  2. 1.索引对应列进行排序
    2.将排序结果建立倒排表
    3.将数据地址链拼接到倒排表上
    4.查询的时候,拿到倒排表,查询到数据地址链,最后取到需要的数据
    
  3. 索引的设计原则
  4. 1.类型不多的列没必要建索引,占空间,效果还不好
    2.由于索引也是要占空间的,而且索引建立完毕以后,之后的写入操作都需要更新索引,因此,索引越多对写入操作越不友好,索引的数量要控制
    3.索引建立的列,不能是全模糊和前模糊查询的那种情况[全模糊与前模糊都不走索引],尽量建立在精确匹配的场景
    4.索引建立的列,尽量不要建立在text类型上
    
  5. 事务的基本特性和隔离级别-※
  6. 基本特性
    ACID: atom consistent isolation duration
    原子性:每个事务的执行应当是原子性的,要么都执行,要么都不执行
    一致性:数据库总是从一致性的状态变化到另外一种一致性的状态,所有数据应当具有一致的状态,不存在矛盾;即无论何时,数据都应当满足本身的约束条件    
    隔离性:事务之间应当是隔离的,不会互相影响
    持久性:事务一旦提交,就持久化到数据库里面了
    
    隔离级别
    1.读未提交 脏读,一个事务A没有执行完,另一个事务B读到了A的中间处理结果
    2.读已提交 不可重复读,一个事务A没有执行完,事务B读到的数据为C,事务A执行完毕,事务B读到的数据为D
    3.可重复读 ,利用多版本并发控制,事务A写操作的数据版本与事务B读操作的数据版本不一致,从而保证两个事务读写操作是独立的
    4.串行,每个操作都加锁,保证串行执行,但效率很低,一般不用
    
  7. 什么是MVCC
  8. MVCC multi version concurrent control 多版本并发控制
    
    简而言之就是 每个数据都有若干版本,读写分离,操作的是不同版本的数据
    
    读已提交:每次读 都生成一个readView
    可重复读:每次读都复用同一个readView
    
  9. 简述MyISAM和InnoDB的区别-※
  10. Explain语句中各个字段分别表示什么?-※
  11. 索引覆盖是什么?
  12. 查询索引的时候,所有目标结果列就已经包含在索引里面了,因此,就没有必要再去查找原表了,从而提高了查询效率
    
  13. 最左前缀原则是什么?-※
  14. 查询SQL的时候,如果利用到了联合索引,那么使用的顺序与建立索引的顺序必须保持一致
    
  15. InnoDB是如何实现事务的?-※
  16. B树和B+树的区别?为什么Mysql使用B+树?-※
  17. Mysql的锁有哪些?如何理解?-√
  18. 1.共享锁 排他锁
    共享锁:其他线程可以读 但是不能写,也不能加排他锁,可以加共享锁
    排他锁:其他线程不可读不可写,也不能继续加锁
    
    2.行锁 表锁
    行锁:锁定一行
    表锁:锁定一张表
    
    3.乐观锁、悲观锁
    乐观锁:不是真正上锁 而是通过数据多版本控制的方式实现上锁,乐观认为 自己上锁以后 不会有其他线程同时访问修改该数据,最后判断一下上锁的版本号是不是最新的版本,如果不是最新版本就放弃操作
    悲观锁:例如行锁、表锁
    

标签:事务,八股文,数据库,查询,索引,版本,数据,上锁
From: https://www.cnblogs.com/dengliang356a/p/17536319.html

相关文章

  • spring-八股文
    对IOC的理解inverseofcontrol,控制翻转,将bean的生成交给spring管理,例如,@autowired自动装配的mapper层对象。好处:单例bean可以有效复用,减少对象生成的时间成本。各种bean还有自身的应用场景。单例bean与单例模式spring自动装配出来的对象全都会指向同一个单例bean,不强制约......
  • Java-八股文
    hashcode()、equals()1.如果hashcode()不相同,两个对象一定不是同一个对象2.如果hashcode()相同,两个对象不一定上同一个对象,需要进一步判别equals3.如果equals相同,应当认为两个对象就是相同对象由于hashcode方法仅返回一个值,equals里面有若干逻辑,因此,部分集合类的判断中,会优先......
  • PostgreSQL向量数据库pgvector之ivfflat实践
    前言ChatGPT、OpenAI和大型语言模型(LLM)应用的不断普及,将近似近邻搜索(ANN)的概念推向了前沿,并由于嵌入的使用,引发了人们对向量数据库的重新关注。嵌入是短语的数学表示,它将语义捕捉为数值的向量量,鉴于嵌入通常由一千多个维度组成--OpenAI的维度为1,536,因此必须开发新的技术。目前还没......
  • SQL数据库-新增字段时,默认值依然为NULL
    SQL数据库-新增字段时,给默认值的方法代码如下:altertable表名ADD字段intNOT NULLDEFAULT 0alter table表名 ADD 字段 numeric(18, 4) NOT NULL DEFAULT 0;注:特点是:notnull ,如果是null,是不会赋默认值0的,如果是notnull,就会赋默认值0......
  • 恢复oracle数据库DROP表误删除的数据 注意此时的表名称已经被重新命名,table_name和obj
    恢复oracle数据库DROP表误删除的数据注意此时的表名称已经被重新命名,table_name和object_name就是回收站中的存放表名。https://blog.csdn.net/qq_34253619/article/details/124434357数据恢复方法的原理是因为oracle数据库在删除表时会将删除信息存放于某虚拟“回收站”中而......
  • java 关于数据库外键
    查询性能:当查询涉及到外键关系时,数据库需要进行额外的操作来验证关联关系的完整性,这可能会导致查询速度变慢。特别是在大型数据库系统中,外键的验证操作可能会消耗较多的计算资源和时间。更新性能:当更新外键相关的数据时,数据库需要确保更新操作不会破坏关联关系的完整性。这可......
  • 携手华南理工大学培育数据库人才,“巨杉数据库管理与应用奖学金”颁奖仪式隆重举行
    巨杉数据库作为新一代国产分布式数据库的领军者,长期致力于高校人才培养,近期在为华南理工大学学子颁发专项奖学金,为培育国产数据库及金融科技人才发力。近期,巨杉数据库奖学金颁奖仪式在华南理工大学举办。该奖学金由巨杉数据库设立,旨在表彰华南理工大学的优秀学子,产学研联合推动分......
  • Linux中常用数据库管理系统之MariaDB
    我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在。数据库就是存储这些数据资料的仓库,那么这些数据是如何被管理的呢?今天我们就来一起了解下数据库管理系统。所谓数据库管理系统,就这......
  • Linux中常用数据库管理系统之MariaDB
    我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在。数据库就是存储这些数据资料的仓库,那么这些数据是如何被管理的呢?今天我们就来一起了解下数据库管理系统。所谓数据库管理系统,就这......
  • Linux中常用数据库管理系统之MariaDB
    我们生活在信息化时代,经常要跟数据打交道,它在我们的日常生活中无处不在,比如手机支付,微信聊天,淘宝购物,使用的这些在后台都会对应一个叫数据库的存在。数据库就是存储这些数据资料的仓库,那么这些数据是如何被管理的呢?今天我们就来一起了解下数据库管理系统。所谓数据库管理系统,就这......