在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
Python最开始是被用于编写自动化脚本的,但是随着python版本的迭代以及语言新功能的添加,越来越多的被用在项目开发领域。作为计算机程序设计语言,都需要与数据库实现交互。所以作为Python开发工程师你一定要熟练数据的使用。下面就为大家分享一些Python开发工程师面试过程中遇到的关于数据库的题目。
一、说一下 mysql 数据库存储的原理?
储存过程是一个可编程的函数,它在数据库中创建并保存。它可以有 SQL 语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。存储过程通常有以下优点:
a、存储过程能实现较快的执行速度。
b、存储过程允许标准组件是编程。
c、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。
d、存储过程可被作为一种安全机制来充分利用。
e、存储过程能够减少网络流量。
二、数据库索引
数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B_TREE。B_TREE 索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。
三、数据库优化方案
优化索引、SQL 语句、分析慢查询
设计表的时候严格根据数据库的设计范式来设计数据库
使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘 IO
优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等;
采用 MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率
垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O
主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来
分库分表分机器(数据量特别大),主要的的原理就是数据路由
选择合适的表引擎,参数上的优化
进行架构级别的缓存,静态化和分布式
不采用全文索引
采用更快的存储方式,例如 NoSql 存储经常访问的数据。
四、数据库怎么优化查询效率?
1、储存引擎选择:如果数据表需要事务处理,应该考虑使用 InnoDB,因为它完全符合 ACID 特性。如果不需要事务处理,使用默认存储引擎 MyISAM 是比较明智的
2、分表分库,主从。
3、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引
4、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描
5、应尽量避免在 where 子句中使用 != 或 <> 操作符,否则将引擎放弃使用索引而进行全表扫描
6、应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描
7、Update 语句,如果只更改 1、2 个字段,不要 Update 全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志
8、对于多张大数据量(这里几百条就算大了)的表 JOIN,要先分页再 JOIN,否则逻辑读会很高,性能很差。
以上就是Python工程师数据库常见面试题。你面试的时候有遇到过吗?又或许你现在刚刚开始学习Python开发,一定要着重掌握关于数据库相关的知识,未来是大数据时代,对于数据库的要求会越来越多。所以能掌握数据库的知识也是为自己未来的职场发展提供更多的机会。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Python开发岗位求职面试常见问题集锦(二)
Python是目前国内外广受关注的编程语言之一。因此很多朋友选择学习python编程语言,而再人才大量涌入这个行业的同时,企业有了更多的选择性,对求职者的筛选也越来越严格。如果没有充分准备就去面试,很容易遭遇碰壁。那如何才能增加自己面试成功的几率呢?……
8812
2019-06-28 18:21:33
Python工程师常见面试题集锦--网络编程(1)
自从互联网诞生以来,基本上所有的程序都属于网络程序,也就需要设计到网络编程,在python中,就是在python程序本身这个进程内,链接别的服务器进程的通信端口进行通信。在Python程序员找工作的时候,京城被问到关于网络编程的问题。下面就和大家分享一下那些面试中经常出现的问题吧。
8460
2019-08-14 10:20:04
Python面试题 scrapy 框架运行的机制?
scrapy 框架运行的机制从start_urls里获取第一批url并发送请求,请求由引擎交给调度器入请求队列,获取完毕后,调度器将请求队列里的请求交给下载器去获取请求对应的响应资源,并将响应交给自己编写的解析方法做提取处理:
8304
2019-07-04 17:46:45
Python面试题scrapy和scrapy-redis的区别是什么?
Python面试题scrapy和scrapy-redis的区别是什么?为什么选择redis数据库?scrapy 是一个Python爬虫框架,爬取效率极高,具有高度定制性,但是不支持分布式。选择redis 数据库因为 redis支持主从同步,而且数据都是缓存在内存中的。
8452
2019-07-04 17:55:35
Python入门基础练习题整理附答案
在初学者Python入门的时候,一方面要多注重积累理论基础知识,另一方面就是要多练手。因此本文整理了Python入门的基础练习题,相信对初学者会有很大的帮助。
13165
2019-08-14 18:15:39