MyISAM

MySQL 三万字精华总结 + 面试100 问,和面试官扯皮,吹牛逼!绰绰有余(一:MySql架构,数据类型,存储引擎)收藏系列!

99封情书 提交于 2020-08-06 04:02:23
MySQL 三万字精华总结 + 面试100 问,和面试官扯皮绰绰有余(收藏系列) 写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。 个人建议把面试题看作是费曼学习法中的回顾、简化的环节,准备面试的时候,跟着题目先自己讲给自己听,看看自己会满意吗,不满意就继续学习这个点,如此反复,好的offer离你不远的,奥利给 一、MySQL架构 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在存储引擎的架构上, 插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离 。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。 (海量免费测试资料加1079636098,群内还会有同行一起交流哦~) 连接层 :最上层是一些客户端和连接服务。 主要完成一些类似于连接处理、授权认证、及相关的安全方案 。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。 服务层 :第二层服务层,主要完成大部分的核心服务功能, 包括查询解析、分析、优化、缓存、以及所有的内置函数,所有跨存储引擎的功能也都在这一层实现,包括触发器、存储过程、视图等 引擎层

mysql之存储引擎 体系结构 查询机制(二)

独自空忆成欢 提交于 2020-08-05 23:21:51
你讲学到 一 各大存储引擎介绍 csv存储引擎 archive存储引擎 memory 存储引擎 Myisam Innodb 对比 二 理解mysql体系结构 三 基于查询执行路径理解查询机制 1. mysql 客户端 / 服务端通信 2 查询缓存 不会缓存的情况: 查询缓存适用场景: 3 查询优化处理 执行计划 image-20200627213148005 id: select_type table type possible_keys key rows filtered extra 4 查询执行引擎 5 返回客户端 慢查询日志配置 慢查询日志分析: 慢查询日志分析工具 一 各大存储引擎介绍 存储引擎介绍: 1,插拔式的插件方式 ,插拔式的插件方式 2,存储引擎是指定在表之上的,即一个库中的每一个表都可 ,存储引擎是指定在表之上的,即一个库中的每一个表都可以指定专用的存储引擎。 3,不管表采用什么样的存储引擎,都会在数据区,产生对应 ,不管表采用什么样的存储引擎,都会在数据区,产生对应的一个 的一个frm文件(表结构定义描述文件) csv存储引擎 数据存储以 数据存储以CSV文件 文件 特点:不能定义没有索引、列定义必须为NOT NULL、不能设置自增列 不适用大表或者数据的在线处理 CSV数据的存储用,隔开,可直接编辑CSV文件进行数据的编排 数据安全性低 注:编辑之后

阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?

送分小仙女□ 提交于 2020-08-05 10:37:22
数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数据类型 mysql有哪些数据类型 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别? InnoDB引擎的4大特性 存储引擎选择 数据库基础知识 为什么要使用数据库 (1)数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 (2)数据保存在文件 优点: 数据永久保存 缺点: 1)速度比内存操作慢,频繁的IO操作。 2)查询数据不方便 (3)数据保存在数据库 1)数据永久保存 2)使用SQL语句,查询方便效率高。 3)管理数据方便 什么是SQL? 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。 作用:用于存取数据、查询、更新和管理关系数据库系统。 什么是MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一

MySQL索引的原理,B+树、聚集索引和二级索引的结构分析

邮差的信 提交于 2020-08-05 08:21:58
索引是一种用于快速查询行的数据结构,就像一本书的目录就是一个索引,如果想在一本书中找到某个主题,一般会先找到对应页码。在mysql中,存储引擎用类似的方法使用索引,先在索引中找到对应值,然后根据匹配的索引记录找到对应的行。   我们首先了解一下索引的几种类型和索引的结构。 索引类型 B树   大多数存储引擎都支持B树索引。b树通常意味着所有的值都是按顺序存储的,并且每一个叶子也到根的距离相同。B树索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取数据。下图就是一颗简单的B数。 B树的查询流程: 如上图我要从找到E字母,查找流程如下: (1)获取根节点的关键字进行比较,当前根节点关键字为M,E<M(26个字母顺序),所以往找到指向左边的子节点(二分法规则,左小右大,左边放小于当前节点值的子节点、右边放大于当前节点值的子节点); (2)拿到关键字D和G,D<E<G 所以直接找到D和G中间的节点; (3)拿到E和F,因为E=E 所以直接返回关键字和指针信息(如果树结构里面没有包含所要查找的节点则返回null); (4)通过指针信息取出这条记录的所有信息; B+树 下图为B+树的结构,B+树是B树的升级版,我们可以观察一下,B树和B+树的区别是什么? B+树和B树的区别是: 1. B树的节点中没有重复元素,B+树有。 2. B树的中间节点会存储数据指针信息,而B

MySQL两千万数据大表优化过程,三种解决方案!

不想你离开。 提交于 2020-08-05 06:22:32
使用阿里云rds for MySQL数据库(就是MySQL5.6版本),有个用户上网记录表6个月的数据量近2000万,保留最近一年的数据量达到4000万,查询速度极慢,日常卡死。严重影响业务。 问题前提:老系统,当时设计系统的人大概是大学没毕业,表设计和sql语句写的不仅仅是垃圾,简直无法直视。原开发人员都已离职,到我来维护,这就是传说中的维护不了就跑路,然后我就是掉坑的那个!!! 我尝试解决该问题,so,有个这个日志。 方案概述 方案一:优化现有mysql数据库。优点:不影响现有业务,源程序不需要修改代码,成本最低。缺点:有优化瓶颈,数据量过亿就玩完了。 方案二:升级数据库类型,换一种100%兼容mysql的数据库。优点:不影响现有业务,源程序不需要修改代码,你几乎不需要做任何操作就能提升数据库性能,缺点:多花钱 方案三:一步到位,大数据解决方案,更换newsql/nosql数据库。优点:扩展性强,成本低,没有数据容量瓶颈,缺点:需要修改源程序代码 以上三种方案,按顺序使用即可,数据量在亿级别一下的没必要换nosql,开发成本太高。三种方案我都试了一遍,而且都形成了落地解决方案。该过程心中慰问跑路的那几个开发者一万遍 :) 方案一详细说明:优化现有mysql数据库 跟阿里云数据库大佬电话沟通 and Google解决方案 and 问群里大佬,总结如下(都是精华): 1

阿里面试官必问的12个MySQL数据库基础知识,哪些你还不知道?

拜拜、爱过 提交于 2020-08-05 01:52:26
数据库基础知识 为什么要使用数据库 什么是SQL? 什么是MySQL? 数据库三大范式是什么 mysql有关权限的表都有哪几个 MySQL的binlog有有几种录入格式?分别有什么区别? 数据类型 mysql有哪些数据类型 引擎 MySQL存储引擎MyISAM与InnoDB区别 MyISAM索引与InnoDB索引的区别? InnoDB引擎的4大特性 存储引擎选择 数据库基础知识 为什么要使用数据库 (1)数据保存在内存 优点: 存取速度快 缺点: 数据不能永久保存 (2)数据保存在文件 优点: 数据永久保存 缺点: 1)速度比内存操作慢,频繁的IO操作。 2)查询数据不方便 (3)数据保存在数据库 1)数据永久保存 2)使用SQL语句,查询方便效率高。 3)管理数据方便 什么是SQL? 结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询语言。 作用:用于存取数据、查询、更新和管理关系数据库系统。 什么是MySQL? MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一

MySQL学习笔记(27):备份与恢复

流过昼夜 提交于 2020-08-04 09:27:19
本文更新于2020-05-03,使用MySQL 5.7,操作系统为Deepin 15.4。 目录 逻辑备份和恢复 物理备份和恢复 冷备份和恢复 热备份和恢复 表数据导入导出 MySQL的备份分为逻辑备份和物理备份,物理备份分为冷备份和热备份。恢复分为完全恢复和不完全恢复,不完全恢复又分为基于时间点的恢复和基于位置的恢复。 逻辑备份和恢复 使用mysqldump进行逻辑备份,如 mysqldump dbname > filename 。 为了保证数据备份的一致性,MyISAM存储引擎需加上-l参数,如InnoDB等事务存储引擎应加上--single-transaction。 恢复包括两个步骤: 使用备份数据恢复,如 mysql dbname < backupfilename 。 将备份后至恢复前的日志重做(不要把上一步执行时的二进制日志也重做了),如 mysqlbinlog logfilename | mysql dbname 。可进行不完全恢复,但要注意是否包含完整的事务,如 mysqlbinlog --start-date=start logfilename | mysql dbname 或 mysqlbinlog --start-position=position logfilename | mysql dbname 。 物理备份和恢复 冷备份和恢复 冷备份就是停掉数据库服务

Elasticsearch倒排索引结构

我的梦境 提交于 2020-07-29 04:55:47
一切设计都是为了提高搜索的性能 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。 先来回忆一下我们是怎么插入一条索引记录的: curl -X PUT " localhost:9200/user/_doc/1 " -H ' Content-Type: application/json ' -d ' { " name " : " Jack " , " gender " : 1 , " age " : 20 } ' 其实就是直接PUT一个JSON的对象,这个对象有多个字段,在插入这些数据到索引的同时,Elasticsearch还为这些字段建立索引——倒排索引,因为Elasticsearch最核心功能是搜索。 那么,倒排索引是个什么样子呢? 首先,来搞清楚几个概念,为此,举个例子: 假设有个user索引,它有四个字段:分别是name,gender,age,address。画出来的话,大概是下面这个样子,跟关系型数据库一样 Term(单词) :一段文本经过分析器分析以后就会输出一串单词,这一个一个的就叫做Term(直译为:单词) Term Dictionary(单词字典) :顾名思义,它里面维护的是Term,可以理解为Term的集合 Term Index(单词索引)

记一次数据库迁移的踩坑过程

旧城冷巷雨未停 提交于 2020-07-28 20:15:36
业务场景 最近的一个项目最开始由于资源问题,mysql 数据库是部署在一台云服务器上的,这两天客户提供了云数据库,所以原来在部署在 ECS 服务器上的数据库,需要迁移到云数据库。在云数据库上的优势很多,它自动是分配了一主二从,自动备份等。所以这两天的任务就是要将原来的数据库迁移。 mysql 版本 mysql5.7.17 迁移步骤 迁移数据库是一项需要很谨慎的任务。整个迁移过程大概分成以下几步: 备份原数据库数据 //备份数据库,并指定日期 mysqldump -uadmin -p****** databaseName | gzip > /databak/databaseName_$(date +%Y%m%d).sql.gz 云数据库上初始化数据库、编码、用户名、数据库等基础信息 先通过腾讯云平台创建用户,以及相关权限 //连接数据库 mysql -h172.16.0.1 -uUserName -p****** //创建数据库,并指定编码 CREATE DATABASE databaseName DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; 执行还原操作 //解压备份好的.sql文件 gunzip -v /databak/databaseName_20200517.sql.gz //还原数据库 source

2020稳拿offer宝典,阿里天猫、蚂蚁、钉钉 java 面试题汇总(附解析)

五迷三道 提交于 2020-07-28 19:49:08
Java基础 面向对象的特征:继承、封装和多态 int 和 Integer 有什么区别; Integer的值缓存范围 说说反射的用途及实现 Http 请求的 GET 和 POST 方式的区别 MVC设计思想 什么是Java序列化和反序列化; 如何实现Java序列化; 重载和重写的区别 进程和线程 线程和进程的概念 并行和并发的概念 创建线程的方式及实现 进程间通信的方式 说说 CountDownLatch、CyclicBarrier 原理和区别 说说 Semaphore 原理 说说 Exchanger 原理 ThreadLocal 原理分析; ThreadLocal为什么会出现OOM,出现的深层次原理 讲讲线程池的实现原理 线程池的几种实现方式 线程的生命周期;状态是如何转移的 锁机制 什么是线程安全?如何保证线程安全? 重入锁的概念;重入锁为什么可以防止死锁? 产生死锁的四个条件 如何检查死锁 volatile 实现原理 synchronized 实现原理(对象监视器) synchronized 与 lock 的区别 AQS 同步队列 CAS 无锁的概念;乐观锁和悲观锁 常见的原子操作类 什么是 ABA 问题;出现 ABA 问题 JDK 是如何解决的 乐观锁的业务场景及实现方式 Java 8 并发包下常见的并发类 偏向锁、轻量级锁、重量级锁、自旋锁的概念 数据库 DDL、DML