MyISAM

Java程序员想要靠外包刷题,结果却大跌眼镜,心态都崩了

百般思念 提交于 2020-08-11 00:22:40
最开始是打算面试外包公司刷经验,等经验差不多了,再去甲方尝试,可惜不太顺利。 一、迈思(面试了30分钟) 自我介绍 左连接(a 表左连接 b 表,a 表全部数据出来,b 表没有的数据为空) a 表左连接 b 表,b 表左连接 c 表,c 表左连接 a 表,这样的数据是什么数据(博主当时有点懵,回答全连接,全部数据会出来。。。) sql:一个班的学生有两个字段,一个字段叫分数,另外一个字段叫组名,有 4 个组,查出每个组的第一名,sql 怎么写 select group_name,max(score) from table group by group_name order by group_name 5.数据库引擎有哪些(myIsam,InnoDB 等等) myIsam 和 Inno DB的区别(InnoDB 支持事务,外键,崩溃后恢复,InnoDB 行级锁,myIsam 表级锁) myIsam 的优点(博主当时只记住了 InnoDB 的优点,没想到面试官问到了 myIsam 的优点,速度快,磁盘空间占用少) Spring 的两个特性(IOC 和 aop,这两个特性用到了哪些设计模式) java 的容器,集合(老生常谈了,list, set, map 等等,另外说一下有哪些实现类) hashmap 的实现(数组+链表+红黑树) put 一个 key 和 value

MySQL:从什么是索引,到运用索引(程序员进阶)

好久不见. 提交于 2020-08-10 23:31:43
什么是索引? MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 可以通俗的反过来理解索引: 你要看某一本书里的某一章节里的内容,如果没有目录的话,你是不是要从头开始看着找呢,如果恰巧你想要看的章节内容又是在最后的那几页,你是不是要把书看着翻到最后呢,这效率甭想也知道很低,如果有了目录那就好办多了,你要看书里的某一内容,不用从头翻一遍,你按着目录里的章节去找对应内容就好了。 技术光谈理论不实践都是耍流氓,那么我们来看看具体有哪些索引和对索引的操作 单值索引—— 即一个索引只包含单个列,一个表可以有uoge单列索引。 唯一索引—— 索引列的值必须唯一,但允许有空值。 复合索引—— 一个索引包含多个列。 全文索引—— 只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引 在做索引之前我们先创建足够多数据,这样才能更好的看到索引效果,那么可以用上我们的存储过程创建300万条数据来玩(记住是300百万条不是3000万条,注意不要多个0,不然真的有得等,上一篇文章翻过车,说多都是泪,我放下面了,这里就不赘述) 教你使用MySQL仅调用一个存储过程创建三千万条数据 你看创建300百万条数据也要9分钟多,何况3000万条… 没有建立索引之前

2020年腾讯实习生C++面试题&持续更新中(3)

穿精又带淫゛_ 提交于 2020-08-10 22:27:30
2020年腾讯实习生C++面试题&持续更新中(3) hello,大家好,我是好好学习,天天编程的天天。 来给大家大家分享腾讯实习生面经了。 天天希望大家看到面经后一定要做充分的准备,结合自己掌握的知识,把面试中的每一个问题都深入研究,找到面试官提问的重点,找面试管想要你回答的要点。并可以将自己整理的答案,整理处理,按照一定的逻辑分点作答。 比如: Q: 请你讲一下static这个关键字的使用 你一定要思考一下,组织一下自己的语言,然后给出面试官想要的答案。 A:static在C语言和C++的用法大致有以下几种: static修饰局部变量 static修饰全局变量 static修饰函数 C++中static修饰类的成员变量 C++中static修饰类的成员函数 然后结合以上的5个知识点,给面试官,再展开讲解: 比如:static修饰局部变量的时候,其实一个非static修饰的局部变量是放在内存的栈空间上的,但是被static修饰之后就是静态的局部变量了,该变量就存储到内存的静态区(数据段),放在静态区的数据的生命周期和程序的生命周期一致,所以出了作用域也不会直接销毁。 就按照这个思路就把剩下的几点做以补充! 这样的话,我们的小伙伴在复习知识的时候就得深入复习,查阅资料。 好了方法论就讲到这里,接下来继续分享面试题啦~~~ 2020年腾讯C++实习面试真题 一面 TCP三次握手老问题

MySQL基础知识

人走茶凉 提交于 2020-08-10 20:05:15
1、union和union all的区别: union和union all都可以将两边的查询结果合并,区别在于union的合并会去掉重复行,并且使用默认的排序规则。而union all返回所有行(包括重复行),且对结果不进行排序。 举例如现在创建2张表: Create table Table1 ( id int not null, name varchar(20) not null ); Create table Table2 ( id int not null, name varchar(20) not null ); 插入数据(数据来自网上): Insert into Table1 values (1,'姚羽'); Insert into Table1 values (2,'边兵兵'); Insert into Table1 values (3,'袁磊'); Insert into Table2 values (1,'姚羽'); Insert into Table2 values (2,'柳春平'); Insert into Table2 values (3,'张永超'); Insert into Table2 values (4,'刘华健'); 执行:select * from Table1 union select * from Table2; 执行:select *

MySQL的存储引擎InnoDB选择了B+ 树

萝らか妹 提交于 2020-08-10 18:11:40
我们知道数据的存储和检索是两个很重要的功能,当我们的数据量大了,怎么能快速的检索数据呢,答案是使用索引,可索引具体的技术实现有很多,选择哪一种呢,我就以mysql为例记录下它为什么选择了B+树作为索引的实现方式。 1. 索引简介    索引是一种用于快速查询行的数据结构 ,就像一本书的目录就是一个索引,如果想在一本书中找到某个主题,一般会先找到对应页码。 MySQL 官方对索引的定义为:索引( Index )是帮助 MySQL 高效获取数据的数据结构。提取句子主干,就可以得到索引的本质: 索引是数据结构 。 2. 索引的几种数据结构类型 2.1 哈希索引(hash index) 哈希索引(hash index)基于哈希表(也可以叫散列表)实现 ,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。 下面举个小例子 它能快速的检索数据,不过在mysql数据库却有局限: a): 哈希索引数据并不是按照索引值顺序存储的,所以无法用来进行排序; b): 不能进行多列字段查询数据; c): 更不支持范围查询,比如查询年龄大于30,。 d): 有大量重复键值的情况下,哈希索引的效率也是极低的

mysql系列(三)——mysql架构与存储引擎

无人久伴 提交于 2020-08-10 18:10:40
一、MySql逻辑架构 1.连接层 2.SQL服务层 组成部分 (1)Sql Interface: 处理sql命令的接收及结果的返回 (2)Parser: 解析器,解析sql (3)Optimizer: 优化器,优化sql (4)Caches&Buffer: 缓存 查询命令的执行流程 解析器 优化器 explain SQL查询语句 :查看查询计划 缓存 sql的缓存是默认的,数据缓存需要手动开启(在my.cnf(linux)文件中配置) // 查看缓存是否开启 show variables like '%query_cache_type%' // 设置缓存大小 SET GLOBAL query_cache_size = 4000; SET GLOBAL query_cache_size = 134217728; 3. 引擎层 mysql> show engines; +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | Engine | Support | Comment | Transactions | XA | Savepoints | +-------------

MySQL数据库表设计规范

浪子不回头ぞ 提交于 2020-08-10 17:13:00
一、数据库设计 1、一般都使用 INNODB 存储引擎,除非读写比率<1%,才考虑使用 MYISAM 存储引擎;其 他存储引擎请在 DBA 的建议下使用。 2、Stored procedure (包括存储过程,函数,触发器)对于 MYSQL 来说还不是很成熟, 没有完善的出错记录处理,不建议使用。 3、UUID(),USER()这样的MySQL INSIDE 函数对于复制来说是很危险的,会导致主备数据不一致,所以请不要使用。如果一定要使用UUID作为主键,让应用程序来产生。 4、请不要使用外键约束,如果数据存在外键关系,请在程序层面实现。 5、必须采用 UTF8 编码。 二、数据库对象设计规范 1、表 设计 a)在设计时尽量包含两个日期字段:crt_time(创建日期),upd_time(修改日期)且 非空, 对表的记录进行更新的时候,必须包含对 upd_time字段的更新。 b)必须要有主键,主键尽量用自增字段类型,推荐类型为INT或者BIGINT类型。 c)需要多表join的字段,数据类型保持绝对一致。 d)Mysql 的表尽量设置成 KV(Key-Value)结构,这样便于扩展和维护。 e)当表的字段数非常多时,可以将表分成两张表,一张作为条件查询表,一张作为详细内容表(主要是为了性能考虑)。 f)当字段的类型为枚举型或布尔型时,建议使用 char(1)类型。 g)同一表中

简单讲讲MsQLl索引

耗尽温柔 提交于 2020-08-10 16:33:29
索引概述 MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示。 左边是数据表,一共有两开七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找快速度获取到相应数据 二叉树查找法规则 二叉树每个节点最多只有两个分支 左边第一列为ID号,1..7 左边第二列为数据:34..3 第一行数据:顶部根部为34 第二行数据: 数据为77,大于根部数据34的放在右边,小于在左边,所以77放在第二行的右边 第三行数据:数据为5,由于5小于三十四所以放在第二行的左边 第四行数据:数据为91,由于二叉树结构是只有两个分叉,所以34下面第二行不能再放数据,需放在第三行,那91还是大于34,所以放在右边,而91又大于77,所以又放在77的右边,也就是第三行的最右边 第五行数据:数据为22,小于34,所以放在34的左边,而22又大于5,所以又放在第三行5的右边 第六行数据:数据库59,大于34,小于77

MySQL的基础、开发、优化

不打扰是莪最后的温柔 提交于 2020-08-10 09:39:16
数据库MySQL的基础、开发、优化笔记 文章目录 一、基础 1.SQL基础 查找操作语法,函数 2.MySQL数据类型 2.1数值类型 2.2日期时间类型 2.3字符串类型 3.MySQL中运算符 3.1算术运算符 3.2比较运算符 3.3 逻辑运算符 4.常用函数 4.1字符串函数 4.2数值函数 4.3流程函数 4.4常用函数 二、开发 1.表类型(存储引擎)的选择 1.1 InnoDB存储引擎 1.2 MyISAM存储引擎 2.数据类型选择 2.1 CHAR、VARCHAR 2.2 TEXT、BLOB 2.3 浮点数和定点数 3.字符集 4.索引的设计和使用 三、优化 1.优化sql的一般步骤 2.索引 1.索引的分类 BreakPoint 一、基础 1.SQL基础 DDL: data definition language (数据定义语言) -- 数据库的基本操作 create database test1 ; show databases ; use test1 ; drop database test1 ; -- 数据表的基本操作 show tables ; create table tablename ( col_name1 col_type_contraints col_name2 col_type_contraints ) -- 得到数据表的详细信息 desc

索引的类型

99封情书 提交于 2020-08-10 07:26:02
主键索引、唯一键索引、普通索引、全文索引、组合索引。 主键设置为自增,数据库会使用自增锁来维护主键的有序性;索引设置为自增,可以方便管理索引,否则会涉及到页分裂与列合并,影响性能 覆盖索引:一张表有两个列Id,Name,select id from table where Name = '';只需要查找Name的B+Tree不需要在去查找Id的,这种情况加做覆盖索引; 回表操作指的是InnoDb,InnoDb非主键索引存储的不是行数据,所以有回表;MyISam索引表中存储的是数据的地址,所以不存在回表; 组合索引:设计到最左匹配原则,建立索引的时候,需要注意索引列的顺序;维护一个name,age组合索引,当where条件为age=10,组合索引会失效,因为最左原则,name都没有,就没有必要查下去了,如果where name=‘aaa’,该组合索引是有效的,相当于先查name,再查age; 索引下推:简历组合索引,name,age,入下图数据,相当于对mysql索引查询的优化,索引下推之前,根据name条件查询出符合的数据,然后根据ID,在去Id索引表查询数据并比较age值;索引下推,根据name条件查询出符合的数据,在匹配age条件,符合条件的Id返回去; 持久性 通过redo log实现 数据插入数据库:数据插入会保存在用户态的某块内存中,数据积累到一定数量回进行系统调用