- ------你熟悉mysql 的存储引擎有哪几种,都有什么区别?
这个话题对于我来说有点难,只能转载别人的文章,后期研习,
mysql 四种存储引擎_数据库:MySQL几种常用的存储引擎区别_付小抠的博客-CSDN博客
简单总结一下,常用地额存储引擎有三种优缺点大致如下,
InnoDB:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。从5.7开始innodb存储引擎成为默认的存储引擎
MyISAM:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
注意,同一个数据库也可以使用多种存储引擎的表。如果一个表要求比较高的事务处理,可以选择InnoDB。这个数据库中可以将查询要求比较高的表选择MyISAM存储。如果该数据库需要一个用于查询的临时表,可以选择MEMORY存储引擎。
---------- mysql 的索引类型有哪些,基于innodb 存储引擎的索引原理(b树 和b+树的区别),组合索引的最左原则
mysql中的索引类型有:1、普通索引;2、唯一索引;3、主键索引;4、组合索引;5、全文索引。普通索引是最基本的索引,它没有任何限制。唯一索引要求索引列的值必须唯一,但允许有空值。
- --------谈谈对mysql 事物的理解(事物的概念、特点、应用场景、以及事物的四种隔离级别)
关系型数据库mysql 事务四大特性
一、首先我们先说一下什么是事务
在mysql中对数据进行增删改查中的任何一次操作的过程都可以被认为是一次事务,事务是一系列严密的操作,事务的结束有两种结果,当事务中的所有步骤全部成功执行时,事务则提交成功。如果其中一个步骤失败,将发生回滚操作,并撤消之前到事务开始时的所有操作。
二、事务的ACID
事务具有四个特称:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。
1.原子性:事务在数据库中是一个基本的工作单位,事务中包含的逻辑操作只有两种情况就是成功和失败。即全部都执行完毕和什么都不执行,不会出现对数据修改一半异常停止,此时会自动回滚到事务发生前的状态。
2.一致性:事务执行完毕时一个事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例说明:例如小王转账给小李5000元,在小王账户减少5000元的同时小李账户必须增加5000元,反之亦然。
3.隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据,对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
就是会达到这样一种效果:例如有两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。
4.持久性:一个事务一旦被提交,在数据库种的改变就是永久的,即使系统崩溃重新启动数据库数据也不会发生改变
————————————————
版权声明:本文为CSDN博主「殷浩天」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_31002029/article/details/113286394
MySQL 中事务的隔离级别一共分为四种,分别如下:
-
序列化(SERIALIZABLE)
-
可重复读(REPEATABLE READ)
-
提交读(READ COMMITTED)
-
未提交读(READ UNCOMMITTED)
---------- 对慢sql 了解吗,如何优化慢sql
一个 SQL 执行的很慢,我们要分两种情况讨论:
1、大多数情况下很正常,偶尔很慢,则有如下原因
(1)、数据库在刷新脏页,例如 redo log 写满了需要同步到磁盘。
(2)、执行的时候,遇到锁,如表锁、行锁。
(3)、sql写的烂了
2、这条 SQL 语句一直执行的很慢,则有如下原因:
(1)、没有用上索引或则索引失效:例如该字段没有索引;或则由于对字段进行运算、函数操作导致无法用索引。
(2)、有索引可能会走全表扫描
怎样判断是否走全表扫描:
索引区分度(索引的值不同越多,区分度越高),称为基数,而数据量大时不可能全部扫描一遍得到基数,而是采样部分数据进行预测,那有可能预测错了,导致走全表扫描。
如何优化? 索引+sql语句+数据库结构优化+优化器优化+架构优化