Python面试题大全(四):数据库篇

目录

数据库

MySQL

198.主键 超键 候选键 外键

199.视图的作用,视图可以更改么?

200.drop,delete与truncate的区别

201.索引的工作原理及其种类

202.连接的种类

203.数据库优化的思路

204.存储过程与触发器的区别

205.悲观锁和乐观锁是什么?

206.你常用的mysql引擎有哪些?各引擎间有什么区别?

Redis

207.Redis宕机怎么解决?

208.redis和mecached的区别,以及使用场景

209.Redis集群方案该怎么做?都有哪些方案?

210.Redis回收进程是如何工作的

MongoDB

211.MongoDB中对多条记录做更新操作命令是什么?

212.MongoDB如何才会拓展到多个shard里?


数据库

MySQL

198.主键 超键 候选键 外键

主键:数据库表中对存储数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null).

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

候选键:是最小超键,即没有冗余元素的超键。

外键:在一个表中存在的另一个表的主键称此表的外键。

199.视图的作用,视图可以更改么?

视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。

视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by则对视图再次order by将被覆盖。

创建视图: create view xxx as xxxxxx

对于某些视图比如未使用联结子查询分组聚集函数Distinct Union等,是可以对其更新的,对视图的更新将对基表进行更新;但是视图主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新。

200.drop,delete与truncate的区别

drop直接删掉表,truncate删除表中数据,再插入时自增长id又从1开始,delete删除表中数据,可以加where字句。

1.delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作。truncate table则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器,执行速度快。

2.表和索引所占空间。当表被truncate后,这个表和索引所占用的空间会恢复到初始大小,而delete操作不会减少表或索引所占用的空间。drop语句将表所占用的空间全释放掉。

3.一般而言,drop>truncate>delete

4.应用范围。truncate只能对table,delete可以是table和view

5.truncate和delete只删除数据,而drop则删除整个表(结构和数据)

6.truncate与不带where的delete:只删除数据,而不删除表的结构(定义)drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid.

201.索引的工作原理及其种类

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库表中数据。索引的实现通常使用B树以其变种B+树。

在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。

为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)

202.连接的种类

203.数据库优化的思路

204.存储过程与触发器的区别

205.悲观锁和乐观锁是什么?

206.你常用的mysql引擎有哪些?各引擎间有什么区别?

Redis

207.Redis宕机怎么解决?

宕机:服务器停止服务‘

如果只有一台redis,肯定 会造成数据丢失,无法挽救

多台redis或者是redis集群,宕机则需要分为在主从模式下区分来看:

slave从redis宕机,配置主从复制的时候才配置从的redis,从的会从主的redis中读取主的redis的操作日志1,在redis中从库重新启动后会自动加入到主从架构中,自动完成同步数据;

2, 如果从数据库实现了持久化,此时千万不要立马重启服务,否则可能会造成数据丢失,正确的操作如下:在slave数据上执行SLAVEOF ON ONE,来断开主从关系并把slave升级为主库,此时重新启动主数据库,执行SLAVEOF,把它设置为从库,连接到主的redis上面做主从复制,自动备份数据。

以上过程很容易配置错误,可以使用redis提供的哨兵机制来简化上面的操作。简单的方法:redis的哨兵(sentinel)的功能

208.redis和mecached的区别,以及使用场景

区别

1、redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可以用于缓存其他东西,例如图片,视频等等

2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储

3、虚拟内存-redis当物流内存用完时,可以将一些很久没用的value交换到磁盘

4、过期策略-memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire设定,例如expire name 10

5、分布式-设定memcache集群,利用magent做一主多从,redis可以做一主多从。都可以一主一丛

6、存储数据安全-memcache挂掉后,数据没了,redis可以定期保存到磁盘(持久化)

7、灾难恢复-memcache挂掉后,数据不可恢复,redis数据丢失后可以通过aof恢复

8、Redis支持数据的备份,即master-slave模式的数据备份

9、应用场景不一样,redis除了作为NoSQL数据库使用外,还能用做消息队列,数据堆栈和数据缓存等;Memcache适合于缓存SQL语句,数据集,用户临时性数据,延迟查询数据和session等

使用场景

1,如果有持久方面的需求或对数据类型和处理有要求的应该选择redis

2,如果简单的key/value存储应该选择memcached.

209.Redis集群方案该怎么做?都有哪些方案?

1,codis

目前用的最多的集群方案,基本和twemproxy一致的效果,但它支持在节点数量改变情况下,旧节点数据客恢复到新hash节点

2redis cluster3.0自带的集群,特点在于他的分布式算法不是一致性hash,而是hash槽的概念,以及自身支持节点设置从节点。具体看官方介绍

3.在业务代码层实现,起几个毫无关联的redis实例,在代码层,对key进行hash计算,然后去对应的redis实例操作数据。这种方式对hash层代码要求比较高,考虑部分包括,节点失效后的替代算法方案,数据震荡后的字典脚本恢复,实例的监控,等等

210.Redis回收进程是如何工作的

一个客户端运行了新的命令,添加了新的数据。

redis检查内存使用情况,如果大于maxmemory的限制,则根据设定好的策略进行回收。

一个新的命令被执行等等,所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断回收回到边界以下。

如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。

MongoDB

211.MongoDB中对多条记录做更新操作命令是什么?

212.MongoDB如何才会拓展到多个shard里?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494886.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有史以来最精彩的自问自答:OpenAI 转方块的机械手

机械手任务之三 - 转鸡蛋,示意图来源:AI 科技评论摘要:今年 2 月,OpenAI 发起了一组机械手挑战,他们在基于 MuJoCo 物理模拟器的 Gym 环境中新设计了含有机械臂末端控制、机械手拿取物体的两组八个有难度的、早期强化学…

寻找两个有序数组的中位数(虚拟数组图文详解)

思路一(暴力): 当看到这个题目的时候可能会觉的是不是系统高估了这个题目,这个这么简单,只需要将两个数组合并,排序然后合并就好了。这样做确实可以求出中位数,但是并不能说是完成题目的要求&am…

uva540

题目的意思大概就是现在让你做一个数据结构,具体的应该是一个队列,有一堆元素,这堆元素拥有两个特性,一是它的值,二是它所在的team值。这个队列满足以下的一些性质(操作)。 ENQUEUE(k) &#xf…

Python面试题大全(五):测试、大数据、数据结构、架构

目录 测试 213.编写测试计划的目的是 214.对关键词触发模块进行测试 215.其他常用笔试题目网址汇总 216.测试人员在软件开发过程中的任务是什么 217.一条软件Bug记录都包含了哪些内容? 218.简述黑盒测试和白盒测试的优缺点 219.请列出你所知道的软件测试种类…

【决策】Waymo无人出租车年底发射,现已进入定价环节 | 公交部门竟成友军?...

开车栗 发自 凹非寺量子位 出品 | 公众号 QbitAI按照Waymo的计划,今年年底之前,他们的无人出租车服务就要进入市场了。现在,无人的士已进入了定价环节,紧张刺激。Waymo希望从此开始,人类能一点一点抛弃私家车&#xff…

盘点那些具有“爆款”潜力的智能家居产品

来源:OFweek 摘要:智能家居已经火了有一段时间,然而目前真正普及的家庭并不多。从长远来看,智能家居是一种更环保、智能、舒适、安全的人居环境,它涉及物联网、人工智能等相关技术,是人们理想的一种生活方式…

圆圈中最后剩下的数字

题目:n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。当一个数字删除后,从被删除数…

TCP/IP校验和(浅析+实例)

校验和的作用   按照协议的规定,报文到达每一层,首先验证校验和是否正确,丢弃掉不正确的报文,再才会进行后续操作。  那么校验和是怎么计算的呢?  校验和的计算方法(以 IP 首部中的校验和为例) 方法是计算16位的二…

4位数学家获得2018年菲尔兹奖

来源:科学网2018年菲尔兹奖8月1日在巴西里约热内卢市举行的第28届国际数学家大会上揭晓,获奖者为伊朗裔数学家Caucher Birkar、意大利数学家Alessio Figalli、德国数学家Peter Scholze,以及印澳裔数学家Akshay Venkatesh。4位获奖者对数学领域…

ASP.NET GridView控件在列上格式化时间

症状&#xff1a;在GridView绑定日期格式的时候&#xff0c;数据库中的日期为2008-07-04&#xff0c;而GridView显示的是2007-07-04 000000。、 解决办法&#xff1a;想把这后面这多余的零去掉的话在绑定时间的那一列源码后面加上一句话就可以了&#xff0c;如下红色的部分 <…

spark-submit 参数设置

在使用spark时&#xff0c;根据集群资源情况和任务数据量等&#xff0c;合理设置参数&#xff0c;包括但不限于以下&#xff1a; 参数说明masteryarn E-MapReduce 使用 Yarn 的模式yarn-client&#xff1a;等同于 –-master yarn —deploy-mode client&#xff0c; 此时不需要…

科学研究发现,盲人用时间感知空间

来源&#xff1a;中国科学报摘要&#xff1a;在书籍和电影中&#xff0c;盲人通常用超敏感的听力帮助他们在现实世界中穿梭。在书籍和电影中&#xff0c;盲人通常用超敏感的听力帮助他们在现实世界中穿梭。但是&#xff0c;8月1日发表在iScience杂志上的一项研究表明&#xff0…

SharePoint创建web application的时候报错

今天在SharePoint Server上创建一个web application的时候报错了。 The password supplied with the username ***\*** was not correct. Verify that it was entered correctly and try again. 我之前是改过administrator的密码,但确实用stsadm.exe -o updatefarmcredentials…

传输层(学习笔记)

传输层基本概念&#xff1a; 传输层负责端与端之间的数据传&#xff0c;主要有两大知识点&#xff1a;TCP和UDP 五元组 在TCP/IP协议中, 用 “源IP”, “源端口号”, “目的IP”, “目的端口号”, “协议号” 这样一个五元组来标识一个通信(可以通过netstat -n查看); 端口号范…

随机读写 vs 顺序读写

磁盘是如何存储数据的&#xff1f; 信息存储在硬盘里&#xff0c;把它拆开也看不见里面有任何东西&#xff0c;只有些盘片。假设&#xff0c;你用显微镜把盘片放大&#xff0c;会看见盘片表面凹凸不平&#xff0c;凸起的地方被磁化&#xff0c;凹的地方是没有被磁化&#xff1b…

C# 析构函数(Destructor)和终结器(Finalizer)——托管资源的释放

本文内容 使用析构函数释放资源 Object.Finalize 方法 资源的显式释放 使用析构函数释放资源 析构函数用于析构类的实例。 不能在结构中定义析构函数。只能对类使用析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。它们是被自动调用的。 析…

教育部:建设100+AI特色专业, 500万AI人才缺口要补上!

来源&#xff1a;网络大数据摘要&#xff1a;为落实《国务院关于印发新一代人工智能发展规划的通知》&#xff0c;为我国新一代人工智能发展提供战略支撑&#xff0c;教育部在近日正式发布了《高等学校人工智能创新行动计划》。AI再次被提上国家级日程!为落实《国务院关于印发新…

TCP三次握手详解及面试题

为什么必须是三次握手&#xff1f; 大家都知道传输层&#xff08;点击这里去传输层&#xff09;中的TCP协议是面向连接的&#xff0c;提供可靠的连接服务&#xff0c;其中最出名的就是三次握手和四次挥手&#xff0c;今天先讲解三次握手&#xff08;四次挥手点这里&#xff09;…

git 撤销修改:未push 、已push

场景&#xff1a;不小心把一次错误的代码push到远程服务器上的分支上&#xff0c;需要立即删除/撤销这次代码提交。 具体方法&#xff0c;git命令&#xff1a; git loggit reset --hard <commit_id>git push origin HEAD --force【命令详解】 获取commit_id&#xff1…