MySQL常见面试题(一)

news2024/12/24 20:56:57

😀前言
在数据库管理系统中,存储引擎起着核心的角色,它决定了数据管理和存储的方式。MySQL作为一个领先的开源关系型数据库管理系统,提供了多种存储引擎来满足不同的需求和优化不同的应用。除了选择合适的存储引擎,数据库的设计还涉及到范式设计和表设计,这两者都对数据库的性能和数据一致性有深远的影响。在本文中,我们将探讨MySQL的各种存储引擎,比较MyISAM和InnoDB两种流行的存储引擎,深入数据库的范式设计,并探讨在数据库表设计时应如何选择合适的字段。此外,我们还将讨论在MySQL中记录货币时应选择哪种字段类型。

🏠个人主页:尘觉主页
在这里插入图片描述

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉

在csdn获奖荣誉: 🏆csdn城市之星2名
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 💓Java全栈群星计划top前5
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🤗 端午大礼包获得者
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 🥰阿里云专家博主
⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ ⁣⁣⁣⁣ 😉亚马逊DyamoDB结营

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

    • MySQL中有哪些存储引擎?
    • MyISAM和InnoDB的区别是什么?
    • 请概述下数据库的范式设计
    • 数据库表设计时,字段你会如何选择?
    • mysql里记录货币用什么字段类型好?
    • 😄总结

MySQL中有哪些存储引擎?

InnoDB存储引擎

InnoDB是MySQL的默认事务型引擎,也是最重要、使用最广泛的存储引擎。它被设计用来处理大量的短期(short-lived)事务,应该优先考虑InnoDB引擎。

MylSAM存储引擎

在MySQL 5.1及之前的版本,MyISAM是默认的存储引擎。MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,而且崩溃后无法安全恢复。MyISAM对整张表加锁,很容易因为表锁的问题导致典型的的性能问题。

Mrg_MylSAM

Merge存储引擎,是一组MyIsam的组合,也就是说,他将MyIsam引擎的多个表聚合起来,但是他的内部没有数据,真正的数据依然是MyIsam引擎的表中,但是可以直接进行查询、删除更新等操作。

Archive引擎

Archive存储引擎只支持INSERT和SELECT操作,会缓存所有的写并利用zlib对插入的行进行压缩,所以比MyISAM表的磁盘I/O更少。但是每次SELECT查询都需要执行全表扫描。所以Archive表适合日志和数据采集类应用,Archive引擎是一个针对高速插入和压缩做了优化的简单引擎。

Blackhole引擎

Blackhole引擎没有实现任何的存储机制,它会丢弃所有插入的数据,不做任何保存。可以在一些特殊的复制架构和日志审核时发挥作用。但这种引擎在应用方式上有很多问题,因此并不推荐。

CSV引擎

CSV引擎可以将普通的CSV文件(逗号分割值的文件)作为MySQL
的表来处理,但这种表不支持索引。因此CSV引擎可以作为一种数据交换的机制,非常有用。

Federated引擎

Federated引擎是访问其他MySQL服务器的一个代理,它会创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,然后提取或者发送需要的数据。默认是禁用的。

Memory 引擎

Memory表至少比MyISAM 表要快一个数量级,数据文件是存储在内存中。Memory表的结构在重启以后还会保留,但数据会丢失。

Memroy表在很多场景可以发挥好的作用:

用于查找(lookup)或者映射(mapping)表,例如将邮编和州名映射的表。

用于缓存周期性聚合数据(periodically
aggregated data)的结果。

用于保存数据分析中产生的中间数据。

Memory表支持 Hash索引,因此查找操作非常快。Memroy表是表级锁,因此并发写入的性能较低,每行的长度是固定的,可能导致部分内存的浪费。

NDB集群引擎

使用MySQL服务器、NDB集群存储引擎,以及分布式的、share-nothing 的、容灾的、高可用的NDB数据库的组合,被称为MySQL集群((MySQL
Cluster)。

MyISAM和InnoDB的区别是什么?

MyISAM引擎是5.1版本之前的默认引擎,支持全文检索、压缩、空间函数等,但是不支持事务和行级锁,所以一般用于有大量查询少量插入的场景来使用,而且MyISAM不支持外键,并且索引和数据是分开存储的。

InnoDB是基于聚簇索引建立的,和MyISAM相反它支持事务、外键,并且通过MVCC来支持高并发,索引和数据存储在一起。

请概述下数据库的范式设计

目前关系数据库有六种范式,常见范式:第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解;第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性;第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余。。

范式化设计优缺点:

优点:可以尽量得减少数据冗余,使得更新快,体积小;缺点:对于查询需要多个表进行关联,减少写得效率增加读得效率,更难进行索引优化

反范式化:

优点:可以减少表得关联,可以更好得进行索引优化;缺点:数据冗余以及数据异常,数据得修改需要更多的成本,常见的反范式设计有缓存、冗余等等。

数据库表设计时,字段你会如何选择?

更小的通常更好,应该尽量使用可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。但是要确保没有低估需要存储的值的范围。

简单就好,简单数据类型的操作通常需要更少的CPU周期。例如,整型比字符操作代价更低,比如应该使用MySQL内建的类型而不是字符串来存储日期和时间。

尽量避免NULL,如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。可为NULL的列会使用更多的存储空间,在MySQL里也需要特殊处理。当可为NULL的列被索引时,每个索引记录需要一个额外的字节。

mysql里记录货币用什么字段类型好?

MySQL既支持精确类型的存储DECIMAL类型,也支持不精确类型存储FLOAT和 DOUBLE类型。对于货币记录,应该选择DECIMAL类型,但是DECIMAL类型是以字符串形式存放的,所以性能会有影响。

作为替代方案,可以在数据量比较大的而且要求精度时,虑使用BIGINT代替DECIMAL,将需要存储的货币单位根据小数的位数乘以相应的倍数即可。

😄总结

通过对MySQL的多种存储引擎进行了深入探讨,我们可以看到每种引擎都有其独特的特点和应用场景。InnoDB和MyISAM作为最常用的存储引擎,有着明显的差异和各自的优势。在数据库设计中,我们还探讨了范式设计的重要性和它的优缺点,强调了在设计数据库表时选择正确字段类型的重要性。

我们了解到,范式设计可以帮助我们创建结构良好、无冗余的数据库,而正确的字段选择可以优化数据库的性能并保证数据的一致性。特别是在处理货币类型的数据时,选择正确的字段类型是非常关键的。

通过深入探讨MySQL的这些核心概念和特性,我们不仅可以更好地理解MySQL数据库的工作原理,还可以学会如何优化数据库设计来满足特定的应用需求和优化性能。希望这篇文章能为您提供一个全面的视角,帮助您在使用MySQL时做出更明智的决策。

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

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

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

相关文章

拉格朗日乘子法思路来源

核心思路:由果索因 一. 直观理解 1. 问题描述 对于如"图1"式(等式约束优化问题, 可行域是边界), 转化成拉格朗日乘子法的思路来源: 图1: 拉格朗日乘子法问题描述图 如"图2",f为曲面.c为平面, 黑色加粗线是f和c的交线.(约束就是限制自变量的变化范围). …

Llama2-Chinese项目:2.1-Atom-7B预训练

虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱。为了能够提升模型的中文能力,可以采用微调和预训练两种路径,其中&#xff1…

聚观早报|蔚来汽车首颗自研芯片;中式汉堡正打破“麦门永存”

【聚观365】9月19日消息 蔚来汽车首颗自研芯片 中式汉堡正在打破“麦门永存” 三星Galaxy S24系列入网 特斯拉电动皮卡预订量已超过200万辆 郭明錤称iPhone 15 Pro Max需求强劲 蔚来汽车首颗自研芯片 蔚来汽车正在进行自研芯片布局,蔚来汽车硬件副总裁白剑上个…

慢SQL治理经验总结

在过去两年的工作中,我们团队曾负责大淘宝技术的慢SQL治理工作,作为横向的数据安全治理平台,如何快速准确地发现部门内所有应用的慢SQL,并进行高效的推动治理,同时覆盖多个开发、生产环境,是一个很大的挑战…

机器人掀起“智能热潮”:揭秘中国机器人市场的新风貌

原创 | 文 BFT机器人 中国的机器人市场和自动化形势从未像今年这样令人兴奋。去年,全球超过一半的工业机器人在中国销售。2023年上半年,中国机器人需求趋势仍在继续上升,根据估算,在此期间销售的工业机器人数量约为14.5万台&…

用Python分析文本数据的词频并词云图可视化(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

广播风暴的分析和解决方法(STP配置)

目录 1.广播风暴 2.解决方法&#xff1a;配置STP 1.广播风暴 以下图为例 配置交换机LSW1 <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname LSW1 [LSW1]stp Sep 14 2023 05:35:15-08:00 LSW1 DS/4/DATASYNC_CFGCHANGE:OID 1.3.6.1.4.1.…

SAP中销售订单运达方导致销项税错误问题实例

近期财务同事反映SAP中一笔国内客户的销售发票会计凭证中显示码是X0&#xff0c;代出的销项税是0。 进一步检查销售发票billing&#xff0c;发现发票价格条件中销税税条件取值确实是0。 基于税码决定的系统逻辑&#xff0c;前面博客中也曾专门分析过。下面在追踪问题时就会按这…

九、蜂鸣器

九、蜂鸣器 蜂鸣器介绍蜂鸣器播放提示音 蜂鸣器介绍 音符频率对照表 蜂鸣器播放提示音 #include <REGX52.H> #include <INTRINS.H> //蜂鸣器端口&#xff1a; sbit BuzzerP1^5; void Buzzer_Delay500us() //12.000MHz {unsigned char i;_nop_();i 247;while (-…

【计算机组成原理】读书笔记第三期:内存和磁盘的关系

目录 写在开头 内存与磁盘的关系 基本关系 磁盘缓存 虚拟内存 节约内存的编程方法 通过DLL文件实现函数共有 通过调用_stdcall来降低文件程序的大小 磁盘的物理结构 结尾 写在开头 本文继续阅读总结《程序是怎样跑起来的》这本书&#xff08;作者&#xff1a;矢泽…

基于Java的流浪动物救助及领养管理设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

机器人制作开源方案 | 随叫随到的智能垃圾桶

作者&#xff1a;卢智浩 尹宗岱 胡文珺 付文智 陈星 单位&#xff1a;江汉大学 指导老师&#xff1a;侍中楼 李巍 本作品围绕探索者场景和应用主题&#xff0c;基于当今时代“智能家”的快速发展&#xff0c;智慧生活成为未来的一大发展趋势&#xff0c;因此我们设计了此款可…

基于Java网络书店商城设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

从零开始学习 Java:简单易懂的入门指南之Stream流(二十七)

Stream流 Stream流1.体验Stream流2.Stream流的常见生成方式3.Stream流中间操作方法4.Stream流终结操作方法5.Stream流的收集操作6.Stream流综合练习 Stream流 1.体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中…

GO-日志分析

GO-日志分析 log包简介 Go提供了logger包来做日志记录。使用方式如下所示 package mainimport ("log""os" )func main() {// 创建一个新的日志文件.默认是stdOutfile, err : os.Create("app.log")if err ! nil {log.Fatal(err)}defer file.Cl…

Linux系统远程访问另一台Windows系统的解决方案

SSH方法 在windows上安装openssh server&#xff0c;在 linux上安装openssh。通常linux会自带openssh&#xff0c;故这里只讲解windows上安装openssh server的方法 1、检查openssh server是否存在 以管理员身份进入Powershell&#xff0c;输入以下命令 Get-WindowsCapabili…

Win10、Win11家庭版开启远程桌面

Win11家庭版开启远程桌面 在windows家庭版中&#xff0c;是不提供远程桌面服务的&#xff0c;你没有办法使用远程桌面连接到windows家庭版中。当然&#xff0c; 你可用升级windows 版本到专业版&#xff0c;这样就可用享受到windows自带的远程桌面服务了。 我的电脑是win11家庭…

【Linux基础】第27讲:Linux查找和过滤命令(二)——grep命令

Grep命令 grep是根据文件的内容进行查找&#xff0c;会对文件的每一行按照给定的模式&#xff08;patter&#xff09;进行匹配查找 基本格式&#xff1a; grep [options]范围 [options] 主要参数 -c: 只输出匹配行的计数 -i : 不区分大小写 -n: 显示匹配行及行号 -w: 显示整个…

【鸽鸽送书第一期】 | 实现可观测性平台的技术要点是什么?文末参与送书哦!

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《粉丝福利》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言实现可观测性平台的技术要点是什么&#xff1f;1.兼容全域信号量2.所谓全域信号量有哪些&#x…

除了天地图,还有哪些平台可以标绘地图?

想要在地图上标绘业务数据或制作个人地图&#xff0c;却难以找到一款得心应手的地图标绘平台。 在经过一番探索查找之后&#xff0c;发现天地图的标注功能还比较适用。 天地图中的标注 在天地图中&#xff0c;可以将现有的数据导入与地图进行叠加&#xff0c;也可以将绘制的地…