返回顶部

面试6

1 说一下 MySQL 数据库存储的原理?

过程是一个可编程的函数,它在数据库中创建并保存。实际上是用户通过创建存储过程创建好的系统对象,它具有指定的名字、类型(存储过程/函数)及要执行的语句序列等。

 

2 事务的特性

       1、原子性:事务中的全部操作在数据库中是不 可分割的,要么全部完成,要么均不执行。

  2、一致性:几个并行执行的事务,其执行结果必 须与按某一顺序串行执行的结果相一致。

  3、隔离性:事务的执行不受其他事务的干扰,事务 执行的中间结果对其他事务必须是透明的。

  4、持久性:对于任意已提交事务,系统必须保证该 事务对数据库的改变不被丢失,即使数据库出现故障

3 readis 和 mysql 的区别?

readis 是内存数据库,数据保存在内存中,速度快。 mysql 是关系型数据库,持久化存储,存放在磁盘里面,功能强 大。检索的话,会涉及到一定的 IO,数据访问也就慢。

 

4 redis 受攻击怎么办?

1 设置主从配置 2持久化存储 3 Redis 不以 root 账户启动 3 设置复杂密码 4不允许 key 方式登录

 

5 MongoDB

MongoDB 是一个面向文档的数据库系统。使用 C++编写,不支持 SQL,但有自己功能强大的查询语法。

MongoDB 使用 BSON 作为数据存储和传输的格式。BSON 是一种类 似 JSON 的二进制序列化文档,支持嵌套对象和数组。

 

6 数据库索引

数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B_TREE。 B_TREE 索引加速了数据访问,因为存储引擎不会再去扫描整张表得到需要的数据;相反,它从根节点开始,根节点保存了子节点的指针,存储引擎会根据指针快速寻找数据。

 

7 数据库怎么优化查询效率

         1储存引擎选择:如果数据表需要事务处理,应该考虑使用 InnoDB

         2 分表分库,主从

         3对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引

         4.应尽量避免在 where 子句中对字段进行 null 值判断,

         5应尽量避免在 where 子句中使用 !=或or操作符

         6 Update 语句,如果只更改 1、2 个字段,不要 Update 全部字 段

 

8 数据库优化方案

         1 优化索引、SQL 语句、分析慢查询

         2 设计表的时候严格根据数据库的设计范式来设计数据库

    3 使用缓存

    4 主从分离读写

    5 不采用全文索引

 

9  Redis mongodb 优缺点

         MongoDB 建议集群部署,更多的考虑到 集群方案,Redis 更偏重于进程顺序写入,虽然支持集群,也仅限于 主-从模式.

Redis 优点:

         1 读写性能优异 2 支持数据持久化3 支持主从复制

缺点:

         1 Redis 不具备自动容错和恢复功能2 Redis 较难支持在线扩容3 Redis 的主从复制采用全量复制

mongodb优点:

         1弱一致性,更能保证用户的访问速度 文档结构的存储方式,能够更便捷的获取数

2高效存储二进制大对象 (比如照片和视频)

3支持复制集、主备、互为主备、自动分片等特性 动态查询 全索引支持,扩展到内部对象和内嵌数组

缺点:不支持事务 MongoDB 占用空间过大 维护工具不够成熟

 

10 怎样解决海量数据的存储和访问造成系统设计瓶颈的问题?

水平切分数据库:可以降低单台机器的负载,同时最大限度的降 低了宕机造成的损失;,

负载均衡策略:可以降低单台机器的访问负载,降低宕机的可能 性

集群方案:解决了数据库宕机带来的单点数据库不能访问的问题;

读写分离策略:最大限度了提高了应用中读取数据的速度和并发量

 

11 MySQL 集群的优缺点

优点:

1 99.999%的高可用性

2快速的自动失效切换

3灵活的分布式体系结构,没有单点故障

4高吞吐量和低延迟

5可扩展性强,支持在线扩容

缺点:

1存在很多限制,比如:不支持外键

2部署、管理、配置很复杂

3占用磁盘空间大,内存大

4备份和恢复不方便

5重启的时候,数据节点将数据 load 到内存需要很长时间

 

12你用的 mysql 是哪个引擎,各引擎间有什么区别?

Innerdb默认支持事务

 

13 redis 基本类型、相关方法

Redis支持五种数据类型:string(字符串)、hash(哈希)、list(列表)、set (集合)及zset(sorted set:有序集合)。

String常用命令: set,get,decr,incr,mget 等

hash常用命令:hget,hset,hgetall 等。

list常用命令:lpush,rpush,lpop,rpop,lrange等

set常用命令:sadd,spop,smembers,sunion等

zset常用命令:zadd,zrange,zrem,zcard 等

 

14 怎样解决数据库高并发的问题?

  1. 分表分库 2. 数据库索引 3. redis 缓存数据库 4. 读写分离5. 负载均衡集群:

15  sqlserver,MySQL ,Oracle http,redis,https 默认端 口号?

         Sqlserver:1433  MySQL:3306  Oracle:1521  http:40  https:443  redis:6379  Mongo 27017

 

posted @   Crazymagic  阅读(425)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示

目录导航