出处: https://www.cnblogs.com/lizhengtao/p/9990972.html

1、MySQL常见数据库引擎及比较?

InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。

注意:

同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该

数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。

2、简述数据三大范式?

第一范式(确保每列保持原子性)

数据表中的每一列(每个字段),必须是不可拆分的最小单元。

第二范式(确保表中的每列都和主键相关)

第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

第三范式(确保每列都和主键列直接相关,而不是间接相关)

表中每一列只与主键直接相关而不是间接相关(每一列只能依赖于主键)

3、简述触发器、函数、视图、存储过程?

触发器:触发器是一个特殊的存储过程,它是MySQL在insert、update、delete的时候自动执行的代码块

函数:MySQL中提供了许多内置函数,还可以自定义函数(需要sql逻辑处理)

视图:视图是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影

存储过程:把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现(经过第一次编译后再次调用不需要再次编译,比一个个执行sql语句效率高)

4、数据库优化方案?

5、char和varchar的区别?

char类型:定长不可变

存入字符长度大于设置长度时,会报错;存入字符长度小于设置长度时,用空格填充剩余长度,浪费空间,但是存取速度快。

varchar类型:可变

不使用空格填充,在真实数据前加1-2Bytes作前缀,用来表示真实数据的字节数,节省空间,存取速度较慢。

6、简述MySQL的执行计划?

# explain +SQL语句

# SQL在数据库中执行时的表现情况,通常用于SQL性能分析,优化等场景。'explain select * from rbac_userinfo where id=1;'

7、1000w条数据,使用limit offset 分页时,为什么越往后翻越慢?如何解决?

8、redis和memcached比较?

1.存储容量:

memcached超过内存比例会抹掉前面的数据,而redis会存储在磁盘

2.支持数据类型:

memcached只支持string;

redis支持更多;如:hash、list、集合、有序集合

3.持久化:

redis支持数据持久化,可以将内存中的数据保持在磁盘中,memcached无

4.主从:

即master-slave模式的数据备份(主从)。

5.特性

Redis在很多方面具备数据库的特征,或者说就是一个数据库系统,Memcached只是简单的K/V缓存

9、redis中数据库默认是多少个db 及作用?

#redis默认有16个db,db0~db15(可以通过配置文件支持更多,无上限)

#并且每个数据库的数据是隔离的不能共享

#可以随时使用SELECT命令更换数据库:redis> SELECT 1# 注意:

多个数据库之间并不是完全隔离的

比如FLUSHALL命令可以清空一个Redis实例中所有数据库中的数据。

10、如果redis中的某个列表中的数据量非常大,如果实现循环显示每一个值?

按 Ctrl+C 复制代码

# 通过scan_iter分片取,减少内存压力

scan_iter(match=None, count=None)增量式迭代获取redis里匹配的的值

# match,匹配指定key

# count,每次分片最少获取个数

r = redis.Redis(connection_pool=pool)

for key in r.scan_iter(match='PREFIX_*', count=100000):

print(key)

按 Ctrl+C 复制代码

11、redis如何实现主从复制?以及数据同步机制?

实现主从复制:

'创建6379和6380配置文件'

redis.conf:6379为默认配置文件,作为Master服务配置;

redis_6380.conf:6380为同步配置,作为Slave服务配置;

'配置slaveof同步指令'

在Slave对应的conf配置文件中,添加以下内容:

slaveof 127.0.0.1 6379

数据同步步骤:

(1)Slave服务器连接到Master服务器.

(2)Slave服务器发送同步(SYCN)命令.

(3)Master服务器备份数据库到文件.

(4)Master服务器把备份文件传输给Slave服务器.

(5)Slave服务器把备份文件数据导入到数据库中.

12、如何实现redis集群?

基于【分片】来完成。

- 集群是将你的数据拆分到多个Redis实例的过程

- 可以使用很多电脑的内存总和来支持更大的数据库。

- 没有分片,你就被局限于单机能支持的内存容量。

redis将所有能放置数据的地方创建了 16384 个哈希槽。

如果设置集群的话,就可以为每个实例分配哈希槽:

- 192.168.1.20【0-5000】

- 192.168.1.21【5001-10000】

- 192.168.1.22【10001-16384】

以后想要在redis中写值时:set k1 123

- 将k1通过crc16的算法转换成一个数字,然后再将该数字和16384求余,

- 如果得到的余数 3000,那么就将该值写入到 192.168.1.20 实例中。

集群方案:

- redis cluster:官方提供的集群方案。

- codis:豌豆荚技术团队。

- tweproxy:Twiter技术团队。

13、MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中都是热点数据?

限定Redis占用的内存,根据自身数据淘汰策略,淘汰冷数据,把热数据加载到内存。计算一下 20W 数据大约占用的内存,然后设置一下Redis内存限制即可。

14、什么是codis及作用?

Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说,

连接到 Codis-Proxy(redis代理服务)和连接原生的 Redis-Server 没有明显的区别,

上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作,

所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务.

15、什么是twemproxy及作用?

什么是Twemproxy

是Twtter开源的一个 Redis 和 Memcache 代理服务器,

主要用于管理 Redis 和 Memcached 集群,减少与Cache服务器直接连接的数量。

他的后端是多台REDIS或memcached所以也可以被称为分布式中间件。

作用:

通过代理的方式减少缓存服务器的连接数。

自动在多台缓存服务器间共享数据。

通过配置的方式禁用失败的结点。

运行在多个实例上,客户端可以连接到首个可用的代理服务器。

支持请求的流式与批处理,因而能够降低来回的消耗。

16、写代码实现redis事务操作

importredis

pool= redis.ConnectionPool(host='10.211.55.4', port=6379)

conn= redis.Redis(connection_pool=pool)#pipe = r.pipeline(transaction=False)

pipe = conn.pipeline(transaction=True)#开始事务

pipe.multi()

pipe.set('name', 'zgc')

pipe.set('role', 'haha')

pipe.lpush('roless', 'haha')#提交

pipe.execute()'注意':咨询是否当前分布式redis是否支持事务

17、什么是一致性哈希?python中是否有相应的模块?

一致性哈希

一致性hash算法(DHT)可以通过减少影响范围的方式,解决增减服务器导致的数据散列问题,从而解决了分布式环境下负载均衡问题;

如果存在热点数据,可以通过增添节点的方式,对热点区间进行划分,将压力分配至其他服务器,重新达到负载均衡的状态。模块:hash_ring

python怎么使用数据库系统有什么好处_数据库简单介绍相关推荐

  1. [python知识] 爬虫知识之BeautifulSoup库安装及简单介绍

    一. 前言         在前面的几篇文章中我介绍了如何通过Python分析源代码来爬取博客.维基百科InfoBox和图片,其文章链接如下:         [python学习] 简单爬取维基百科程 ...

  2. python 人工智能课程对孩子的好处_少儿编程有什么好处?儿童编程课程学习Python的4大原因...

    儿童编程Python是什么课程? Python是强制用一种面向对象的解释型计算机程序设计语言,它是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public Li ...

  3. python 人工智能课程对孩子的好处_高中的学生对人工智能感兴趣,有必要去学习 Python 吗?...

    课程忙,时间紧,还是以学业为重吧,别赔了夫人又折兵. Python作为人工智能的首选语言,是有必要学习的. 就像题主所说的学习编程,很耗时间,由其是自学,也不是一朝一夕的事情,虽然python相对其它 ...

  4. python 人工智能课程对孩子的好处_学习人工智能对孩子的好处有哪些

    学习人工智能对孩子的好处有哪些? 1.拓展孩子的空间联想力 昆明童程童美少儿机器人编程培训班的课程体系中包含丰富的编程机器人课程.机械人学习套装里包括品种精彩的结构零件,孩子在学习机械人的时候,自身搭 ...

  5. python人工智能课程对孩子的好处_人工智能课堂给中学生带来了什么好处

    当人工智能课走进中学课堂,对中学课堂带来的影响有哪些,中学生做好应对人工智能课堂的准备了吗? 广东最顶尖的中学正在为应对人工智能时代的来临做好准备.昨日,记者从华南师范大学附属中学了解到,该校面向奥班 ...

  6. python在docx指定位置插表格_超简单Python将指定数据插入到docx模板指定位置渲染并保存...

    超简单Python将指定数据插入到docx模板渲染并生成 最近有一个需求,制作劳动合同表,要从excel表格中将每个人的数据导入到docx劳动合同中,重复量很大,因此可以使用python高效解决.为了 ...

  7. python关键字中文意思_中英文简单介绍Python关键字 -- Python Key Words

    直奔主题,理解Python关键字有利于正确理解Python中的命令,对于系统掌握Python语法有着十分重要的作用. 1, False : Boolean Value as no 2, True : ...

  8. python词云图制作壮观天体照_超简单:快速制作一款高逼格词云图

    词云图,也叫文字云,是对文本中出现频率较高的"关键词"予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨. 一.先看看几个词云图 ...

  9. mysql字段名大写好处_数据库的表名字段名大小写问题

    今天发现它真的是一个问题. 拿我最喜欢的Oracle来说吧.一般情况下,建表不管大小写,建完表名.字段名总是大写的,这样你不得不在单词之间加下划线,从而增加了字段名长度,有时就超长了.在select的 ...

最新文章

  1. 资源高效搜索方法,你 Get 到了吗?
  2. oracle经常使用函数(1)
  3. python中requests库的用途-Python.Requests库的基本使用
  4. 一步步学习SpringBoot(一) 快速搭建一个web
  5. 启动tomcat提示Could not create the Java virtual machine.
  6. linux之heartbeat高可用的简单配置
  7. Linux内核中影响tcp三次握手的一些协议配置
  8. SQL语言之创建数据库其他对象(视图)
  9. C指针原理(43)-helloworld的C程序汇编剖析
  10. 锂电池放空后充不进电_锂电池过度放电后充不进电怎么办
  11. Bootstrap 下拉菜单事件
  12. OI队的土豆树(C++)
  13. 程序员颈椎病康复秘籍,你值得拥有!
  14. 怎么用计算机美元和人民币怎么换算,美金换算人民币计算器(人民币和美元换算)...
  15. Maven 高级玩法
  16. 语义分割:遥感影像标签制作
  17. vue报错:Object(...) is not a function
  18. Android必知必会-自定义Scrollbar样式
  19. php导出成word试卷,依据word模板批量生成试卷
  20. android opengl es 圆锥纹理贴图

热门文章

  1. 【论文阅读笔记】High Quality Monocular Depth Estimation via Transfer Learning
  2. 万年历单片机C语言报告,51单片机万年历C语言
  3. oracle存储过程文件在哪,Oracle存储过程读文件-Oracle
  4. 何帅:“在线”思考,王坚的云计算心理学
  5. 关于已移除sd卡,手机不认卡的原因和解决办法(转)
  6. 【循序渐进学Python】Python中的循环(二)——while循环与嵌套
  7. Linux--gcc的基本用法
  8. ipv6dns服务器后面为空,ipv6获取不到网关和dns服务器
  9. VScode 安装中文插件,不生效的解决办法
  10. krpano实现多语言切换