MyISAM

MySQL 21道高频面试题及其解析

人盡茶涼 提交于 2020-04-03 23:52:04
Q1:MySQL主要有哪些存储引擎,分别适合哪些应用场景? 答:主要有①MyISAM,是5.5版本之前的默认存储引擎,支持表级锁,不支持事务和外键,并发效率较低,读取数据快,更新数据慢。适合以读操作为主,并且对并发性要求较低的应用。②InnoDB,MySQL目前的默认存储引擎,支持行级锁、事务和外键,并发效率好。适合对事务的完整性和并发性、数据的准确性要求比较高,增删操作多的应用。③Memory,所有的数据都保存在内存中,访问速度快,一旦服务关闭数据将丢失。适合更新不太频繁的数据量小的表用来快速得到访问结果。④Archive、Federated等。 Q2:索引是什么? 答:MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。 Q3:索引的优缺点有哪些? 答:①优势:提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本,降低CPU的消耗。②劣势:实际上索引也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索引列也是要占用空间的。 虽然索引大大提高了查询效率,同时却也降低更新表的速度,如对表进行INSERT、UPDATE

Mariadb基本操作

瘦欲@ 提交于 2020-04-01 02:19:48
1、 导入hellodb.sql生成数据库 (1) 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄 [root@centos7 ~]# mysql -p -S /mysql/3307/socket/mysql.sock Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 10 Server version: 10.2.25-MariaDB-log MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> source hellodb_innodb.sql (2) 以ClassID为分组依据,显示每组的平均年龄 (3) 显示第2题中平均年龄大于30的分组及平均年龄 (4) 显示以L开头的名字的同学的信息 2、数据库授权magedu用户,允许192.168.1.0/24网段可以连接mysql 3

MySQL数据库存储引擎

孤者浪人 提交于 2020-03-29 01:22:06
这里主要介绍最常用的两种存储引擎。 1.InnoDB InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。 Innodb引擎提供了对数据库ACID事务的支持,并且实现了SQL标准的四种隔离级别,关于数据库事务与其隔离级别的内容请见数据库事务与其隔离级别这类型的文章。该引擎还提供了行级锁和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是该引擎不支持FULLTEXT类型的索引,而且它没有保存表的行数,当SELECT COUNT(*) FROM TABLE时需要扫描全表。当需要使用数据库事务时,该引擎当然是首选。由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表。 适用场景: 1)经常更新的表,适合处理多重并发的更新请求。 2)支持事务。 3)可以从灾难中恢复(通过bin-log日志等)。 4)外键约束。只有他支持外键。 5)支持自动增加列属性auto_increment。 2.MyIsam MyIASM是MySQL默认的引擎,但是它没有提供对数据库事务的支持,也不支持行级锁和外键,因此当INSERT(插入

mysql入门(一)

社会主义新天地 提交于 2020-03-28 18:16:16
数据库介绍 数据库是在计算机出现以后,为了解决计算机存储问题而创建, 数据库中包含表,表当中才是数据。 数据库的发展史 1. 萌芽阶段 所有存储依赖的都是文件,安全性低,查找非常困难。 2. 层次模型 1). 优点:查询分类的效率高; 2). 缺点:导航结构:如果查找同类别数据,效率低。 数据不完整(如下图) 3. 网状模型 数据不完整性:我们认为每一行数据之间是独立不相关的,网状模型解决了数据不完整的问题,但是依然没有导航结构。 4. 关系模型 现在主流的数据库模型。特点:每张表都是独立的,没有导航结构,表和表之间通过公共字段建立关系,注意:公共的字段,名字可以不一样,但是数据类型必须一致,表达的含义必须一致.数据类型一致,但不一定是公共字段。 优点:有导航结构; 缺点:关系型数据库操作不便捷(关系可能比较复杂),执行效率低下。 补充:在项目中不是每一个业务都需要关系型数据库,可以使用非关系型数据库(NoSql) 简单概念认识 记录,字段,行列,表的属性,字段的属性。 1. 一条记录我们称之为一行数据; 2. 一个字段称之为一列; 3. 表的属性就是字段; 4. 字段的属性就是该字段的功能; 5. 数据冗余指的是数据重复率。 【补充】: 1)冗余只能减少,不能杜绝; 2)冗余减少了,表的体积就减少了,更新速度提高了,保证了数据额完整性; 3)减少了冗余,但是表的数量增加了

MySQL存储引擎介绍

狂风中的少年 提交于 2020-03-28 07:43:50
一 存储引擎解释   首先确定一点,存储引擎的概念是MySQL里面才有的,不是所有的关系型数据库都有存储引擎这个概念,后面我们还会说,但是现在要确定这一点。     在讲清楚什么是存储引擎之前,我们先来个比喻,我们都知道录制一个视频文件,可以转换成不同的格式,例如mp4,avi,wmv等,而存在我们电脑的磁盘上也会存在于不同类型的文件系统中如windows里常见的ntfs、fat32,存在于linux里常见的ext3,ext4,xfs,但是,给我们或者用户看懂实际视频内容都是一样的。直观区别是,占用系统的空间大小与清晰程度可能不一样。 那么数据库表里的数据存储在数据库里及磁盘上和上述的视频格式及存储磁盘文件的系统格式特征类似,也有很多种存储方式。   但是对于用户和应用程序来说同样一张表的数据,无论用什么引擎来存储,用户能够看到的数据是一样的。不同储引擎存取,引擎功能,占用空间大小,读取性能等可能有区别。说白了,存储引擎就是在如何存储数据、提取数据、更新数据等技术方法的实现上,底层的实现方式不同,那么就会呈现出不同存储引擎有着一些自己独有的特点和功能,对应着不同的存取机制。   因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即:对表的存储、操作等的实现方法不同),表是什么,表本质上就是磁盘上的文件。   其实MySQL支持多种存储引擎

mysql常见面试题目

北城余情 提交于 2020-03-28 04:48:47
1, mysql的复制原理以及流程。 (1)先问基本原理流程,3个线程以及之间的关联。 (2)再问一致性,延时性,数据恢复。 (3)再问各种工作遇到的复制bug的解决方法 2,mysql中myisam与innodb的区别,至少5点。 (1) 问5点不同 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MVCC, 而MyISAM不支持 4>.InnoDB支持外键,而MyISAM不支持 5>.InnoDB不支持全文索引,而MyISAM支持。(X) (2) 问各种不同mysql版本的2者的改进 (3)2者的索引的实现方式 3,问mysql中varchar与char的区别以及varchar(50)中的30代表的涵义。 (1)varchar与char的区别 char是一种固定长度的类型,varchar则是一种可变长度的类型 (2)varchar(50)中50的涵义 最多存放50个字符 (3)int(20)中20的涵义 int(M)中的M indicates the maximum display width (最大显示宽度)for integer types. The maximum legal display width is 255. (4)为什么MySQL这样设计? 4

mysql整理

时光怂恿深爱的人放手 提交于 2020-03-27 15:25:23
1.在 mysql 数据库内如何让自动增加字段从0开始 truncate table 表名 2.表中有A B C三列时,用SQL语句实现:当A列大于B列时选择A列,否则选择B列,当B列大于C列时选择B,否则选择C列 select case when A > B then A else B end, case when B > C then B else C end; 3. Redis Redis 是一个 key-value 存储系统。支持五种数据类型: (1) string (字符串) (2) list (列表) (3) hash ( hash 表) (4) set (集合) (5) zset (有序集合) 4. MyISAM 和 InnoDB 的区别 MyISAM 特点 (1)不支持事务、外键 (2)支持表级锁,不支持行级锁 (3)拥有较高的查询效率 InnoDB 特点 (1)支持事务、外键 (2)支持行级锁,并发性更高,需要的花销也更高 如果执行大量的 select , MyISAM 速度更快,如果执行大量的 insert 或 update , InnoDB 速度更快。执行 select count(*) from table 时, MyISAM 只是简单的读出保存好的行数,而 InnoDB 要扫描整个表来计算有多少行,如果执行 select count(*) from

MySQL引擎的和区别

狂风中的少年 提交于 2020-03-27 11:52:03
转载自 https://m.nowcoder.com/tutorial/93/8ac75a692a3b4b0a868796b9f008bc2c MySQL引擎 MySQL中的数据用各种不同的技术存储在文件(或内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧和锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或功能,从而改善你的应用的总体功能。 数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 MySQL存储引擎主要有:MyISAM、InnoDB、Memory、Blackhole、CSV、Performance_Schema、Archieve、Federated、Mrg_Myiasm. 但是最常用的是InnoDB和MyISAM。 InnoDB InnoDB是一个事务型的存储引擎,有行级锁定和外键约束。 InnoDB引擎提供了对数据库ACID事务的支持,并且实现了SQL的四种隔离级别。 该引擎还提供了行级锁定和外键约束,它的设计目标是处理大容量数据库系统,它本身其实就是基于MySQL后台的完整数据库系统,MySQL运行时InnoDB会在内存中建立缓冲池,用于缓冲数据和索引。 但是该引擎不支持FULLTEXT类型的索引 而且它没有保存表的行数

MySQL 常见面试题

家住魔仙堡 提交于 2020-03-27 10:54:50
MySQL常见的两种存储引擎:MyISAM与InnoDB Mysql索引使用的数据结构主要有BTree索引 和 哈希索引 。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余大部分场景,建议选择BTree索引。 Mysql的BTree索引使用的是B数中的B+Tree,但对于主要的两种存储引擎的实现方式是不同的。   MyISAM: B+Tree叶节点的data域存放的是数据记录的地址。在索引检索的时候,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址读取相应的数据记录。这被称为“非聚簇索引”。   InnoDB: 其数据文件本身就是索引文件。相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。这被称为“聚簇索引(或聚集索引)”。而其余的索引都作为辅助索引,辅助索引的data域存储相应记录主键的值而不是地址,这也是和MyISAM不同的地方。在根据主索引搜索时,直接找到key所在的节点即可取出数据;在根据辅助索引查找时,则需要先取出主键的值,在走一遍主索引。 因此,在设计表的时候

高性能Mysq

半城伤御伤魂 提交于 2020-03-27 00:17:44
3 月,跳不动了?>>> Mysql的基本存储结构是 页 (记录都存在页里边); InnoDB目前处理死锁的方式是,将持有最少行级排它锁的的事务进行回滚 mysql默认自动提交模式,不是显式的开始一个事务,则每个查询都被当做是一个事务执行提交操作 myisam适合场景:年度账单(只读,非聚集,不需要事务) 多版本并发 MVCC 来源: oschina 链接: https://my.oschina.net/u/4247262/blog/3212160