Mysql大合集,你要内容的这里全都有

2、Mysql 的技术特点是什么?
Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、厂泛的应用程序编程接口和管理工具。

3、Heap表是什么?
HEAP表存在于内存中,用于临时高速存储。
BLOB或TEXT字段是不允许的
只能使用比较运算符=,<, >,=>,=<HEAP表不支持AUTO_ INCREMENT
索引不可为NULL

4、Mysql 服务器默认端口是什么?
Mysql服务器的默认端口是3306.

5、与Oracle相比,Mysql 有什么优势?
Mysql是开源软件,随时可用,无需付费。Mysql是便携式的
带有命令提示符的GUI.
使用Mysql查询浏览器支持管理

6、如何区分FLOAT和DOUBLE?
以下是FLOAT和DOUBLE的区别:
浮点数以8位精度存储在FLOAT中,并且有四个字节。浮点数存储在DOUBLE中,精度为18位,有八个字节。

7、区分CHAR_ LENGTH和LENGTH?
CHAR
LENGTH 是字符数,而LENGTH 是字节数。Latin 字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。

当然这只是一小部分由于内容太多,想获取更多更全的关于《MySQL55题》的资料可看文末获取方法

回归正题

《MySQL性能优化的21个最佳实践》

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这- - Web 应用最多的数据库。希望下面的这些优化技巧对你有用。

1.为查询缓存优化你的查询

大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。

这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例:
大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。

Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核

心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎

的功能都在这一层实现,比如存储过程、触发器、视图等。

而存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎。

也就是说,你执行 create table 建表的时候,如果不指定引擎类型,默认使用的就是

InnoDB。不过,你也可以通过指定存储引擎的类型来选择别的引擎,比如在 create table

语句中使用 engine=memory, 来指定使用内存引擎创建表。不同存储引擎的表数据存取方

式不同,支持的功能也不同,在后面的文章中,我们会讨论到引擎的选择。

从图中不难看出,不同的存储引擎共用一个Server 层,也就是从连接器到执行器的部分。

对于MySQL的学习,从基础到深入的进阶,都需要我们不断的了解学习,才能够有更多的进步。

那如何去学呢,是否有正确的指引方式,从初级到高级。不用担心,我手里有来自各种大牛总结的资料,包括《MySQL面试专题》、《MySQL性能优化的21个最佳实践》《MySQL实战笔记》《MySQL55题》等。应有尽有,接下来我就会将这些学习笔记的精华分享给大家!下面我们就来一起看看

《MySQL55题 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 》:

1、一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysq|重启,再insert-条记录,这条记录的ID是18还是15 ?
(1)如果表的类型是MyISAM,那么是18
因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失
(2)如果表的类型是InnoDB,那么是15
InnoDB表只是把自增主键的最大ID记录到内存中,所以重启数据库或者是对表进行OPTIMIZE操作,都会导致最大ID丢失

2、Mysql 的技术特点是什么?
Mysql数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程SQL服务器、不同的后端、厂泛的应用程序编程接口和管理工具。

3、Heap表是什么?
HEAP表存在于内存中,用于临时高速存储。
BLOB或TEXT字段是不允许的
只能使用比较运算符=,<, >,=>,=<HEAP表不支持AUTO_ INCREMENT
索引不可为NULL

4、Mysql 服务器默认端口是什么?
Mysql服务器的默认端口是3306.

5、与Oracle相比,Mysql 有什么优势?
Mysql是开源软件,随时可用,无需付费。Mysql是便携式的
带有命令提示符的GUI.
使用Mysql查询浏览器支持管理

6、如何区分FLOAT和DOUBLE?
以下是FLOAT和DOUBLE的区别:
浮点数以8位精度存储在FLOAT中,并且有四个字节。浮点数存储在DOUBLE中,精度为18位,有八个字节。

7、区分CHAR_ LENGTH和LENGTH?
CHAR
LENGTH 是字符数,而LENGTH 是字节数。Latin 字符的这两个数据是相同的,但是对于Unicode和其他编码,它们是不同的。

当然这只是一小部分由于内容太多,想获取更多更全的关于《MySQL55题》的资料可看文末获取方法

回归正题

《MySQL性能优化的21个最佳实践》

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这- - Web 应用最多的数据库。希望下面的这些优化技巧对你有用。

1.为查询缓存优化你的查询

大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。

这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例:

上面两条SQL语句的差别就是CURDATE() ,MySQL的查询缓存对这个函数不起作用。所以,像NOW()和RAND()或是其它的诸如此类的SQL函数都不会开启查询缓存,因为这些函数的返回是会不定的易变的。所以,你所需要的就是用一个变量来代替MySQL的函数,从而开启缓存。

  1. EXPLAIN 你的SELECT 查询

使用EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。

EXPLAIN的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序…等等,等等。

挑一个你的SELECT语句(推荐挑选那个最复杂的,有多表联接的),把关键字EXPLAIN加到前面。你可以使用phpmyadmin来做这个事。然后,你会看到一张表格。下面的这个示例中,我们忘记加上了group_ id索引,并且有表联接:

我们为group_id字段加上索引后:

id索引,并且有表联接:
[外链图片转存中…(img-NITJsCWZ-1652159128408)]
我们为group_id字段加上索引后:
[外链图片转存中…(img-wRKp81WA-1652159128409)]

### 常见的数据库面试题目及答案 #### 1. 数据库事务的特性 (ACID) 数据库事务具有四个重要特性,通常被称为 ACID 特性: - **原子性**:指整个事务是一个不可分割的工作单位,其中的操作要么全部完成,要么全都不做。如果事务的一部分失败,则整个事务都会被回滚[^3]。 - **一致性**:事务必须使数据库从一个一致的状态转变到另一个一致的状态,在此过程中不会破坏数据的完整性约束条件。 - **隔离性**:多个并发执行的事务之间相互独立,互不影响;即使在多用户环境下也能保持各自的数据准确性。 - **持久性**:一旦事务成功结束并提交之后,它对于系统的影响将是永久性的,即便发生系统崩溃也不会丢失已提交的结果。 #### 2. 数据库的水平分区和垂直分区 - **水平分区** 是指按照某些规则将一张表的数据行切分成若干个小表存储,每个小表包含原表的部分行但拥有相同的列结构。这种方式有助于提高查询性能以及简化管理复杂度[^1]。 - **垂直分区** 则是指根据不同业务需求或者访问频率等因素对原始表格按列进行划分,形成新的子表来分别保存不同类型的字段信息。这样做可以减少不必要的I/O开销,并优化特定场景下的读取效率。 #### 3. 编写分页 SQL 查询语句的方法 为了实现高效的分页功能,常用的做法是在 SELECT 语句后面加上 LIMIT 和 OFFSET 子句以指定返回结果集的数量范围。例如要获取第50,000至50,200之间的记录(共200条),可以这样编写 MySQL 的分页查询: ```sql SELECT * FROM table_name ORDER BY id ASC LIMIT 200 OFFSET 49999; ``` 这里 `LIMIT` 参数定义了每页显示的最项数,而 `OFFSET` 表示跳过的起始位置。需要注意的是当面对非常的数据量时,直接使用 OFFSET 可能会导致性能下降,因此实际应用中可能还需要考虑更复杂的策略如基于索引键值的游标分页法等[^2]。 #### 4. 数据库设计中的三范式原则 - **第一范式(1NF)** 要求关系模式中的每一个具体域都应该是不可再分的基本数据项,即确保实体集中不存在重复组或数组形式的存在。 - **第二范式(2NF)** 构建在满足1NF基础上进一步消除部分函数依赖现象,规定所有非主属性完全功能性地依赖于候选关键字而不是它的某个组成部分。 - **第三范式(3NF)** 继续加强规范化程度,在遵循前两个范式的前提下排除传递依赖情况的发生,也就是说除了直接由主码决定之外没有任何其它因素能够影响非主属性的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值