文章目录 1.什么是数据库? 2.如何查看某个操作的语法? 3.MySql的存储引擎有哪些? 4.常用的2种存储引擎? 6.可以针对表设置引擎吗?如何设置? 6.选择合适的存储引擎?...32.什么是回表? 33.如何避免回表? 34.索引覆盖是什么? 35.视图的优缺点? 36.主键和唯一索引区别? 37.如何随机获取一条记录? 38.Mysql中的数值类型?...因此,在大多数情况下,直接选择B+树索引可以获得稳定且较好的查询速度.而不需要使用hash索引. 15. 非聚簇索引一定会回表查询吗?...索引覆盖被查询的字段。 34.索引覆盖是什么? 如果一个索引包含(或覆盖)所有需要查询的字段的值,称为‘覆盖索引’。 35.视图的优缺点?...49.视图是什么?对比普通表优势? 视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。
使用索引:确保内表上的JOIN条件列有索引,这样数据库系统就可以快速定位匹配的行,而不是进行全表扫描。 表顺序:如果可能的话,将较小的表作为外表,这样内部循环的次数会减少。...材化视图:在某些情况下,可以预先计算并存储JOIN的结果,这称为材化视图。当查询相同的JOIN条件时,可以直接查询材化视图,从而提高性能。...为了获得最佳性能,应该确保被连接表上的连接条件列有适当的索引,并且索引的选择应该基于查询的过滤性和选择性。...索引覆盖:如果索引包含了查询所需的所有列(即覆盖索引),那么数据库系统可以避免回表操作,进一步提高性能。回表操作是指在使用索引找到匹配的行后,还需要访问表中的数据页来获取其他列的值。...统计信息:数据库优化器使用统计信息来选择最佳的查询执行计划。确保统计信息是最新的,并且准确地反映了表的大小、行数、列的分布等特征,有助于优化器做出更好的决策。
如果order by用的多了我想ground by你也会用到。但是你用的方式对吗? 语句分析 一.order by 对于order by大家都不陌生,但是为什么使用order by之后查询会变慢呢?...Using index condition是什么意思? 在MySQL5.6以后,Extra出现这句话表明,这条SQL语句优先去过滤索引,过滤完索引后找到所有符合索引条件的数据行。...很遗憾,这条语句仍然使用了Using filesort,也就是说索引并没有生效。 我们上一篇文章中说到过尽量不要使用 select * 。那么我们来改进一下看看。...这里type变成来index,Extra成了Using index。Using index表示直接访问索引就足够获取到所需要的数据,不需要通过索引回表。...2.什么是存储过程?用什么来调用? 3.存储过程的优缺点? 4.什么叫视图?游标是什么? 5.如何维护数据库的完整性和一致性?
所有这些问题都将决定我们的最终设计。 第二步:系统接口定义 定义系统需要哪些api。这不仅能确定预期的确切接口协议,而且从系统也将确保我们不会得到任何要求错误。...像Cassandra这样的NoSQL最适合我们的需要,还是我们应该使用它类似MySQL的解决方案?我们应该使用什么样的块存储来存储照片和视频?...如果我们假设我们会如果有更多的读流量(与写流量相比),我们可以决定使用单独的服务器来处理这些场景。在后端,我们需要一个高效的数据库,可以存储所有的推文和可以 支持大量读取。...•由于我们将存储大量数据,我们应该如何将数据划分为是否将其分发到多个数据库?我们是否应该尝试将一个用户的所有数据存储在同一个服务器上数据库?会引起什么问题?...关键时刻我们会收到警报吗?组件失效或性能下降?(监控) 第八步:归纳总结 总之,面试过程中的准备和组织是面试成功的关键,设计面试。上述步骤应指导您保持正轨,涵盖所有 设计一个系统时要考虑不同的方面。
❌缺点:试用需要您的全名、电子邮件地址、电话号码。...可以肯定地说,Ontrack EasyRecovery拥有您进行数据恢复所需的所有基本功能,还有更多的功能。接下来,让我们看看这个软件在真实的数据丢失场景中表现如何。...选择要扫描的文件类型。我将保留为这一个选择的所有内容,以查看它会发现什么。点击然后。选择要从中恢复数据的位置。我删除的数据来自我的c盘,所以我要扫描它。为了获得完整的体验,我还将在左下角启用深度扫描。...使用文件类型,树形视图,或者已删除列表视图来查找和标记要恢复的文件。您可以打开预览功能,在恢复之前预览文件。我用了树形视图标记在我的回收站中发现的所有要回收的东西。点击恢复。...在使用该软件的过程中,我没有费力去寻找任何东西。它也非常快,即使是深度扫描。当深度扫描1TB固态硬盘上的500GB分区时,扫描过程花了我不到5分钟的时间。
23 MySQL 存储过程和函数有什么区别? 在本质上它们都是存储程序。...函数可以嵌入在 SQL 语句中使用,可以在 SELECT 语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24 存储过程中的代码可以改变吗?...目前,MySQL 还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用 DROP 语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25 存储过程中可以调用其他存储过程吗?...27 存储过程的参数可以使用中文吗 一般情况下,可能会出现存储过程中传入中文参数的情况,例如某个存储过程根据用户的 名字查找该用户的信息,传入的参数值可能是中文。...这在某种程度上实现了数据库之间的迁移。 33 如何选择备份工具 直接复制数据文件是最为直接、快速的备份方法,但缺点是基本上不能实现增量备份。备份时必须确保没有使用这些表。
存储引擎 3.1 常用存储引擎 3.2 InnoDB vs MyISAM 3.3 如何选择存储引擎 4. 存储过程 4.1 定义 4.2 优缺点 5....4.2 优缺点 优点 由于是预编译,所以执行效率高; 存储过程的代码直接在数据库中,通过存储过程名直接调用,能够减少网络通讯; 安全性高,执行存储过程需要有一定权限的用户; 能够重复使用,提高开发效率;...缺点 调试困难 移植困难 重新编译问题,由于存储过程是运行前编译,因此如果带有引用关系的对象发生改变时,受到影响的存储过程、包需要重新编译 若在一个程序中大量使用存储过程,到交付使用时就会随着用户需求的改变而导致数据结构变化...解决方法 若不同程序间并发存取多个表,则尽量约定以相同的顺序来访问表,从而大大降低死锁发生的概率; 同一事务中,尽量一次性锁定所需的所有资源,降低死锁发生的概率; 对于易发生死锁的业务部分,尝试使用升级锁定颗粒度...,从而取出具体数据 7.3 索引优缺点 优点 第一点毫无疑问是 加快数据的检索速度; 第二点则是 通过使用索引,能够在查询过程中使用优化隐藏器,提高性能。
与书中的索引一样,数据库中的索引使您可以快速找到表或索引视图中的特定信息。索引包含从表或视图中一个或多个列生成的键,以及映射到指定数据的存储位置的指针。...通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。 2)索引的缺点: 创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 ...按照存储结构的不同,可以将索引分为两类:聚集索引和非聚集索引,聚集索引和非聚集索引的区别是在物理数据的存储方式上。 1.聚集索引: 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行。...全文引擎并非基于特定行中存储的值来构造 B 树结构,而是基于要编制索引的文本中的各个标记来生成倒排、堆积且压缩的索引结构。...它要求数据表中指定列的数据具有正确的数据类型、格式和有效的数据范围。 2.实体完整性:是指所有的记录都应该有一个惟一的标识,以确保数据表中数据的惟一性。
MySQL中InnoDB引擎的行锁是怎么实现的? 什么是死锁?怎么解决? 为什么要使用视图?什么是视图? 视图有哪些特点?哪些使用场景? 视图的优点,缺点,讲一下?...count(1)、count(*) 与 count(列名) 的区别? 什么是游标? 什么是存储过程?有哪些优缺点? 什么是触发器?触发器的使用场景有哪些? MySQL中都有哪些触发器?...字段为什么要求定义为not null? 如果要存储用户的密码散列,应该使用什么字段进行存储? 优化查询过程中的数据访问 如何优化长难的查询语句?有实战过吗?...实现原理 消息队列 消息队列有哪些使用场景。...消息队列有什么优点和缺点? Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?
要主动识别存储容量饱和度: •确定存储池何时可能用完容量。 •量化满足分配要求所需的额外容量。 •验证存储系统中是否有足够的未使用磁盘来扩展现有存储池。...在此步骤中,组织需要关注两个问题: (1)有足够的容量来完成这些新项目吗? (2)这些新项目将如何影响当前运行的其他应用程序和业务服务?...容量管理数据可以输入资源预留仪表板,以提供问题的答案,其中包括: •拥有什么资源以及如何使用? •存储什么资源以及什么时候存储? •是否拥有现有资源或正在添加新资源? •可以释放多少容量?...为了在确保客户和业务用户获得良好体验,同时最大限度地利用云计算开支,组织可以使用容量管理工具: •扫描当前的环境使用情况,以获取可用于提高基于云计算的服务性能的配置更正。...将IT服务成本的能力与业务服务联系起来 以业务为中心的容量和利用率视图可以帮助组织确保IT支出与业务优先级保持一致。这个过程包括: •根据为其提供支持的IT服务定义业务服务。
有时候要多用几个单词来命名。所有名称都不能包含空格,所以使用下划线能够让你创建更具描述性的名称。 命名时最好避免首字母大写,因为SQL不区分大小写,极可能会搞错数据库。...为什么不能直接把BLOB当成所有文本值的类型? A:因为这样很浪费空间。VARCHAR或CHAR只会占用特定空间,不会多于256个字符。但BLOB需要很大的存储空间。...A:但表设计的越好,整体所需的更新操作就会越少。良好的表设计能让我们从专心于表的内容中解放出来。 查询表时是否应该避免使用LIKE?LIKE有问题吗?...还有,交叉联接有时可用于RDBMS软件及其配置的运行速度。运行交叉联接所需的时间可以轻易的检测与比较出速度慢的查询。 内联接和交叉联接有什么区别吗? A:交叉联接属于内联接的一种。...START TRANSACTION; --持续追踪后续所有SQL语句 COMMIT; --提交所有程序代码造成的改变 ROLLBACK; --回滚,回到事务开始前 可以查看以创建的视图吗?
假设,订单服务只支持通过私有键(key)来查询订单(也许是在使用只支持基于主键接受的NoSQL数据库),此时,没有合适的方法来接收所需数据。...亦可以使用事件来维护不同微服务拥有数据预连接(pre-join)的实现视图。维护此视图的服务订阅相关事件并且更新视图。...可以使用文档数据库(例如MongoDB)来实现客户订单视图,为每个用户存储一个文档。客户订单视图查询服务负责响应对客户以及最近订单(通过查询客户订单视图数据集)的查询。...此方法也是优缺点都有。优点是可以确保事件发布不依赖于2PC,应用发布业务层级事件而不需要推断他们发生了什么;而缺点在于此方法由于开发人员必须牢记发布事件,因此有可能出现错误。...事件存储跟之前描述的消息代理类似,提供API来订阅事件。事件存储将事件递送到所有感兴趣的订阅者,事件存储是事件驱动微服务架构的基干。
CHAR是固定长度,所以它的处理速度比VARCHAR的速度要快,但是它的缺点就是浪费 存储空间。所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之可以使用 VARCHAR类型来实现。...函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24、存储过程中的代码可以改变吗?...目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25、存储过程中可以调用其他存储过程吗?...26、存储过程的参数不要与数据表中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开来,否则将出 现无法预期的结果。 27、存储过程的参数可以使用中文吗?...这在某种程度上实现了数据库之间的迁移。 33、如何选择备份工具? 直接复制数据文件是最为直接、快速的备份方法,但缺点是基本上不能实现增量备份。备 份时必须确保没有使用这些表。
CHAR是固定长度,所以它的处理速度比VARCHAR的速度要快,但是它的缺点就是浪费存储空间。所以对存储不大,但在速度上有要求的可以使用CHAR类型,反之可以使用 VARCHAR类型来实现。...函数可以嵌入在SQL 语句中使用,可以在SELECT语句中作为查询语句的一个部分调用;而存储过程一般是作为一个独立的部分来执行。 24、存储过程中的代码可以改变吗? ...目前,MySQL还不提供对已存在的存储过程代码的修改,如果必须要修改存储过程,必须使用DROP语句删除之后,再重新编写代码,或者创建一个新的存储过程。 25、存储过程中可以调用其他存储过程吗? ...26、存储过程的参数不要与数据表中的字段名相同。 在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开来,否则将出 现无法预期的结果。 27、存储过程的参数可以使用中文吗? ...这在某种程度上实现了数据库之间的迁移。 33、如何选择备份工具? 直接复制数据文件是最为直接、快速的备份方法,但缺点是基本上不能实现增量备份。备份时必须确保没有使用这些表。
关于面试题,可能没那么多时间来总结答案,有什么需要讨论的地方欢迎大家指教。主要记录一下准备过程,和面试的一些总结,希望能帮助到正在面试或者将要面试的同学吧。...微信TableView滑动的时候,动图是不动的,为什么?(Runloop的Mode决定的) 有了解过WebSocket吗?...(UPDATE、DELETE、HEAD) HTTPS介绍一下 HTTPS能防止中间人攻击吗? TCP和UDP的区别 线程和进程的区别 线程之间如何进行通讯 不使用gcd,如何保证线程安全?...(NSOperation、NSThread、GCD) 同步和异步有什么区别? 串行队列和并行队列有什么区别? 队列和线程的关系 死锁是怎么产生的?...介绍了下字典转模型的设计+夜间模式的设计 为什么不用成熟的字典转模型的三方?有了解过吗? 夜间模式有什么缺点,能怎么优化? 锁有哪些? 数据存储,怎么存的(FMDB) 线程安全错误是怎么出现的?
其实,架构就相当于人的骨架,他决定了软件开发之后所有的操作是基于一种什么样的方式进行的,因此,他对于开发是至关重要的。...就很类似,不过就如同 Presenter (主持人) 这个字所代表的意义,所有主控 View 呈现的工作,都是由 Presenter 来做,而 View 本身只是 Presenter 所要使用的舞台而已...模型与视图完全分离,我们可以修改视图而不影响模型。 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部。...Model获得该请求所需要的数据,传递给Controller。 4. Controller拿到这些数据,可能做一些处理,然后拿处理好的数据渲染View。...当然,多大的脚就穿多大的鞋,要用什么样的架构去设计,要与当时的系统环境与需求来决定,而不是只想着要用同一种架构去做所有的系统。
因为InnoDB引擎中的索引策略的最左原则,所以需要注意组合索引中的顺序。36、为什么要使用视图?什么是视图?为什么要使用视图?...使用表的组成部分而不是整个表;保护数据更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据。38、视图的优点,缺点,讲一下?查询简单化。视图能简化用户的操作数据安全性。...40、什么是存储过程?有哪些优缺点?...语句 ,可以降低网络通信量,提高通信速率可以一定程度上确保数据安全缺点:调试麻烦可移植性不灵活重新编译问题41、什么是触发器?...原子性:是使用 undo log来实现的,如果事务执行过程中出错或者用户执行了rollback,系统通过undo log日志返回事务开始的状态。
逻辑数据独立性:视图可以帮助将应用程序与底层表结构的变化隔离开来。 面试题4: MySQL中的存储过程和函数有什么区别?...如果事务失败,MySQL可以使用undo日志来回滚事务,确保事务中的所有操作要么全部完成,要么全部不完成。 一致性:MySQL通过一系列的内部机制(如锁、约束检查等)来确保事务的一致性。...在此级别下,除了使用行级锁外,还会使用一致性非锁定读(Consistent Nonlocking Reads)和MVCC(多版本并发控制)来确保事务在整个过程中多次读取同一行数据时看到的数据是一致的。...但对于需要恢复到某个特定时间点或需要跨多个备份进行恢复的场景,使用binlog可能更为方便和灵活。 面试题29: 你能解释一下MySQL中的乐观锁和悲观锁吗?它们各自适用于什么场景?...总的来说,MVCC通过保存数据的历史版本和使用一致性视图等技术手段来确保事务的隔离性和一致性,从而解决了脏读、不可重复读和幻读等并发访问问题。
领取专属 10元无门槛券
手把手带您无忧上云