首页 > 数据库 >数据库面试总结

数据库面试总结

时间:2024-08-22 20:49:43浏览次数:13  
标签:总结 存储 PostgreSQL 索引 数据库 查询 面试 pg 归档

pgsql 数据库

  1. 在大数据量的查询情况下,pgsql和mysql 谁更有优势
    当数据量达到一定程度时(如数亿条记录以上),PostgreSQL 在查询性能方面的优势可能会更加明显。这得益于其强大的查询优化器、丰富的索引类型、高效的并发处理和事务管理能力以及支持分区和并行查询等特性。

  2. pgsql的索引类型

    • BTree
    • Hash
    • GiST
    • SP-GiST
    • GIN
    • BRIN
  3. 为什么postgresql比MySQL性能好

    • PostgreSQL在处理复杂查询和大数据集方面的性能表现优于MySQL。
    • PostgreSQL支持多版本并发控制(MVCC),这使得它能够高效地处理复杂的事务和并发操作
    • PostgreSQL是多进程数据库,它能够充分利用CPU资源,从而获得更好的性能表现。
    • PostgreSQL完全支持ACID特性,并且其事务处理机制更为强大,确保了数据的一致性和完整性
    • PostgreSQL在创建索引和存储方面表现更好
  4. 什么是回表查询
    简单来说,就是根据某个索引查询的时候,索引里没有查询所需要的字段,就会根据id回到表里查询,避免回表的方式:索引覆盖,把需要的字段都包括在索引里。

  5. 表膨胀以及表膨胀的危害
    原理:pg旧数据存储在数据文件中,并不立刻清理,只是标记为无效。这些旧数据如果不能及时清理,业务表和数据文件会越来越大,引发表膨胀。
    原因:
    慢查询
    游标未关闭
    大事务或者DML量过大,产生死元组速度快于清理
    未开启autovacuum或者禁用了track_counts参数
    autovacuum过慢(例如IO问题、触发阈值不合理、执行周期不合理、配置了延迟触发,worker过于忙碌等)
    长事务,包括pg_dump和pg_dumpall,默认会以可重复读级别开启事务
    危害:
    表和数据文件占用空间持续增长
    查询表时要扫描的数据块可能增多,查询速度变慢
    需要用vacuum full处理(如果不用其他插件),vacuum full会获取表的8级锁,阻塞对表的所有操作,影响业务。并且最大会占有原来磁盘空间的两倍,可能打爆磁盘空间。

  6. 长事务的危害以及如何溯源长事务

    • 如果前面执行过DML语句,会锁定相关数据,阻塞后面语句
    • 阻塞create index(也包括 concurrently)
    • WAL无法及时清理,占用空间大
    • 占用连接数
    • 逻辑复制下会阻塞复制槽的创建
  7. WAL 堆积的原因有哪些

    • 主库大事务、长事务、包括pg_dump,pg_dumpall导出
    • 未开启归档,或归档命令执行失败(命令报错、目录不存在等),开启归档但是归档效率低,默认单进程归档,pgbackrest可以实现多进程归档
    • 复制槽失效
    • max_wal_size,wal_keep_size(pg 13前为wal_keep_segment)设置过大
    • 主库DML量过大,产生WAL日志过多
    • 过于频繁的检查点
  8. 长连接的危害是什么

    • 连接数堆积,可能超过 max_connections
    • 连接数越多,进程调度和管理越复杂,pg性能会线性下降(pg 14对此进行了优化,但依然不建议过多)
    • 无法及时释放内存,甚至遇到过导致oom的情况
    • 空闲过长可能会被防火墙或者DB超时中断,导致应用报错
  9. 空值是如何存储的以及索引是否存储空值
    BTree 索引存储空值(SQL Server也存,Oracle不存)
    存储:在pg元组头数据中,有一个t_bits 的数组,用于存储空值位图。当元组中没有null值的时候,t_bits可以被认为是空的,当元组有null值的列时,t_bits使用一个bit来表示列是否为null。

  10. 索引失效的各种原因
    1.

  11. 行锁是如何实现的,行锁是否会存储在共享内存中
    pg采用元组级常规锁+xmax结合的方式实现行锁。不单纯用元组级常规锁,是为了避免事务修改行过多时,锁表急剧增大导致性能劣化,并且锁表在共享内存中的大小是有限的。因此,行锁也是不存储在内存中的。


未完待续

https://blog.csdn.net/Hehuyi_In/article/details/128885660

标签:总结,存储,PostgreSQL,索引,数据库,查询,面试,pg,归档
From: https://www.cnblogs.com/zerogbc/p/18370893

相关文章

  • C++—八股文总结(25秋招期间一直更新)
    1、const1.1指针常量和常量指针说说constint*a,intconst*a,constinta,int*consta,constint*consta分别是什么,有什么特点。constint*a==intconst*a; //可以通过a访问整数值,但不能通过a修改该整数的值,指针本身是可变的,可以指向不同的整数constint......
  • SQLite数据库
    一、概念:对于一般小批量的数据存放且掉电数据不会丢失,软件的配置及想要持续保存的数据会放入文件中,而对于大批量数据存储和管理时则使用数据库 二、类型:1、关系型数据库 (1)大型数据库:Oracle、DB2(2)中型数据库:MySQL(开源)、SQLServer(3)小型数据库:SQLite 虽然是小型数......
  • 【待做】【ByPass系列】php的webshell绕过方法总结
    原创掌控安全EDU一、php的异或运算$a="~+d()"^"!{+{}"这个表示了$a=这两个字符串之间进行一个异或运算运算异或运算符,按二进制位进行异或运算这里的运算会把符号转化为ascii码,再转化为二进制,再转化为十进制进行运算,再把结果转化为ascii码通过这个转换的方式来绕过检测<......
  • 大厂面试官:你知道Redis如何实现分布式锁么?
    常见面试题,看完基本也没啥问题了Redis如何实现分布式锁分布式锁是用于分布式环境下并发控制的一种机制,用于控制某个资源在同一时刻只能被一个应用所使用。如下图所示:Redis本身可以被多个客户端共享访问,正好就是一个共享存储系统,可以用来保存分布式锁,而且Redis的读写......
  • 【redis数据库】基础入门,五种类型增删改查
    目录1.redis的启动2.redis基本操作3.redis的数据类型4.字符串操作添加修改值获取值5.键相关操作查找键判断键是否存在查看键对应的值类型设置已有键的过期时间查看键过期时间6.哈希操作添加值添加多个值获取字段获取字段对应的值获取多个字段的值获取所有字......
  • 数据库_DuckDB-extension-读取clickhouse数据
    duckdb练习学习sql的新选择-用duckdb代替mysql个人最佳分析数据库01.duckdb和依赖的parquet、httpfs插件02.测试duckdb是否能正常使用OSS,03.在postgresql中使用pg_duckdb访问oss内的parquet文件duckdb扩展duckdb_mysql.DuckDBtodirectlyreadandwri......
  • Xtrabackup全备恢复部分数据库
    背景:生产环境数据采用xtrabackup全量备份数据库,在某些场景下需要进行单个数据库恢复。以下为模拟测试用例:创建测试用表:[root@localhost][(none)]>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql......
  • EF Core使用SharedTypeEntity,映射实体类到不同的数据库表(转载)
    我们可以借助EFCore的SharedTypeEntity,映射一个实体类到多个结构相同的数据库表:publicclassUser{publicintId{get;set;}publicstringName{get;set;}}publicclassSomeDbContext:DbContext{protectedoverridevoidOnConfiguring(DbConte......
  • GBase 8s数据库随系统启动、自重启配置
    近期的客户想实现数据库自重启功能(即故障后自动重启),该功能需要在自动启动的基础上进行改进。关于systemd方式实现自启动的方法可参考之前的文档:https://gbasedbt.com/index.php/archives/161/以下仍是通过systemd方式实现GBase8s数据库的自启动、自重启与关闭。注意:自启......
  • 快手 内推码:TYORVzmsw 秋招 应届生/实习生 真正本人内推 已有多人在我内推之后,接连顺
    内推码:TYORVzmsw校园招聘岗位列表:https://campus.kuaishou.cn/#/campus/jobs?code=TYORVzmsw真正的本人内部推荐!已有多人在我内推之后,接连顺利通过了HR筛选、用人部门筛选、面试!快手员工来浅浅发一波内推码~  快手的校园招聘和实习生招聘开始了!大家快来投递简历,欢迎随......