Python面试——数据库相关问题
1.MySQL事务的特性
1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
3、隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
4、持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障
2.数据库怎么优化查询效率?
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,否则逻辑读会很高、性能很差。
3. 数据库的优化?
1.优化索引、SQL 语句、分析慢查询;
2.设计表的时候严格根据数据库的设计范式来设计数据库;
3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘 IO
4.优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等
5.采用 MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率;
6.垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O;
7.主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来;
8.分库分表分机器(数据量特别大),主要的的原理就是数据路由;
9.选择合适的表引擎,参数上的优化
10.进行架构级别的缓存,静态化和分布式;
11.不采用全文索引;
12.采用更快的存储方式,例如 NoSQL 存储经常访问的数据**。
4. Mysql 数据库中怎么实现分页?
select * from table limit (start-1)*limit,limit;
其中 start 是页码,limit 是每页显示的条数。
5. 怎样解决数据库高并发的问题?
解决数据库高并发的常见方案:
1)分表分库
2)数据库索引
3)Redis 缓存数据库
4)读写分离
5)负载均衡集群:将大量的并发请求分担到多个处理节点。由于单个处理节点的故障不影响整
个服务,负载均衡集群同时也实现了高可用性。
6. redis 有多少个库?
【Python面试——数据库相关问题】Redis 一个实例下有 16 个。
推荐阅读
- 快速入门python看过的一些资料
- 永葆童心,快乐生活——高木直子的漫画
- 2018-01-15
- python|python 爬虫第三天 小项目加扩展无id 重复cssname获取数据与selenium操作
- 王潇——有趣灵魂好看皮囊的持有者
- 《魁拔》1——催人泪下的是小人物大抱负
- 不要当落后的程序员,PHP面试必问的PSR规范
- Python中LSTM回归神经网络的时间序列预测
- 数据库|面试官(MySQL 为什么用 B+ 树实现索引)
- 修改一(挚爱祖国|修改一:挚爱祖国 ——读《梅花魂》有感)