索引

Mysql 索引

好久不见. 提交于 2020-02-05 02:07:38
一. 存储引擎 1. 什么是存储引擎? 与其他数据库例如Oracle 和SQL Server等数据库中只有一种存储引擎不同的是,MySQL有一个被称为“Pluggable Storage Engine Architecture”(可替换存储引擎架构)的特性,也就意味着MySQL数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。MySQL数据库在实际的工作中其实分为了语句分析层和存储引擎层,其中语句分析层就主要负责与客户端完成连接并且事先分析出SQL语句的内容和功能,而存储引擎层则主要负责接收来自语句分析层的分析结果,完成相应的数据输入输出和文件操作。简而言之,就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 2. 存储引擎种类 存储引擎 说明 MyISAM 高速引擎,拥有较高的插入,查询速度,但不支持事务 InnoDB 5.5版本后MySQL的默认数据库,支持事务和行级锁定,比MyISAM处理速度稍慢 ISAM MyISAM的前身,MySQL5.0以后不再默认安装 MRG_MyISAM(MERGE) 将多个表联合成一个表使用,在超大规模数据存储时很有用 Memory 内存存储引擎

list

别等时光非礼了梦想. 提交于 2020-02-05 00:10:11
创建list Python内置的一种数据类型是列表: list 。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >>> ['Michael', 'Bob', 'Tracy'] ['Michael', 'Bob', 'Tracy'] list是数学意义上的有序集合,也就是说,list中的元素是按照顺序排列的。 构造list非常简单,按照上面的代码,直接用 [ ] 把list的所有元素都括起来,就是一个list对象。通常,我们会把list赋值给一个变量,这样,就可以通过变量来引用list: >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates # 打印classmates变量的内容 ['Michael', 'Bob', 'Tracy'] 由于Python是动态语言,所以list中包含的元素并不要求都必须是同一种数据类型,我们完全可以在list中包含各种数据: >>> L = ['Michael', 100, True] 一个元素也没有的list,就是空list: >>> empty_list = [] 任务 假设班里有3名同学:Adam,Lisa和Bart,他们的成绩分别是 95.5,85 和 59,请按照 名字, 分数, 名字, 分数...

程序员面试笔试宝典学习记录(三)(数据库相关知识)

孤街浪徒 提交于 2020-02-04 19:34:32
关系数据库系统与文件数据库系统的区别如下: (a)关系数据库系统的主要特征是数据的结构化,而文件数据库系统是数据的非结构化。 (b)关系数据库系统中,用户看到的逻辑结构是二维表,而文件数据库系统中,基本元素是文件。 (c)文件数据库系统可以实现多媒体文件管理,支持C/S工作模式。 acid,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)。 数据查询:select select * from table where 条件语句 数据操作:insert into table(字段名1,字段名2...)values(值1,值2...) update table set 字段名=字段值 where 条件语句 delete from table where 条件表达式 数据定义:create table tablename(字段1,字段2...) drop table tablename 数据控制:grant <系统权限>|<角色>[,<系统权限>|<角色>]...to <用户名>|<角色>|public[,<用户名>|<角色>]...[with admin option] revoke <系统权限>|<角色>[,<系统权限>|<角色>]...from <用户名>|

[mysql]索引和视图

风流意气都作罢 提交于 2020-02-04 19:31:39
索引和视图 索引:可以加快查询速度 视图:是一种虚拟存在的表 导入:从文件中导入数据到表 导出:从表中导出到文件中 备份:mysqldump 备份数据库到文件 恢复:从文件恢复数据库 #索引 alter table tbname add index indexname (colname); create index indexname on tbname (colname); show index from tbname; 在使用SELECT语句查询的时候,语句中WHERE里面的条件,会自动判断有没有可用的索引 #视图 1.数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中; 2.使用视图查询数据时,数据库系统会从原来的表中取出对应的数据; 3.视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变; 在使用视图的时候,可以把它当作一张表。 create view viewname(colname1,colname2...) as select col1, col2...from tbname; #导入操作 LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字; #导出操作 SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字; 备份与导出的区别

mysql 其他基本操作

雨燕双飞 提交于 2020-02-04 19:19:46
介绍数据库的其他基本操作:索引、视图,导入和导出,备份和恢复等。 1.索引 索引是一种与表有关的结构,它的作用相当于 书的目录 ,可以根据目录中的页码快速找到所需的内容。 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录。这样做会消耗大量数据库系统时间,并造成大量磁盘 I/O 操作。 而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大 加快查询速度 。 ALTER TABLE 表名字 ADD INDEX 索引名 (列名); CREATE INDEX 索引名 ON 表名字 (列名); ex: //在employee表的id列上建立名为idx_id的索引ALTER TABLE employee ADD INDEX idx_id (id); //在employee表的name列上建立名为idx_name的索引CREATE INDEX idx_name ON employee (name); 查看索引 SHOW INDEX FROM 表名字; 2.视图 视图是从一个或多个表中导出来的表,是一种 虚拟存在的表 。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。 注意理解视图是虚拟的表:

MySQL---索引

感情迁移 提交于 2020-02-04 14:45:09
MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 0.5s 0.00001s 提取句子主干,就可以得到索引的本质: 索引是数据结构。 1.索引的分类 在一个表中,主键索引只能有一个,唯一索引可以有多个 主键索引 (PRIMARY KEY ) 唯一的标识,主键不可重复,只能有一个列作为主键 唯一索引 (UNIQUE KEY) 避免重复的列出现,唯一索引可以重复,多个列都可以标识位 唯一索引 常规索引 (KEY/INDEX) 默认的, index。key 关键字来设置 全文索引 (FullText) 在特定的数据库引擎下才有,MyISAM 快速定位数据 -- 索引的使用 -- 1、在创建表的时候给字段增加索引 -- 2、创建完毕后,增加索引 -- 显示所有的索引信息 SHOW INDEX FROM student -- 增加一个全文索引 (索引名) 列名 ALTER TABLE school . student ADD FULLTEXT INDEX ` studentName ` ( ` studentName ` ) ; -- EXPLAIN 分析sql执行的状况 EXPLAIN SELECT * FROM student ; -- 非全文索引 EXPLAIN SELECT * FROM student WHERE MATCH (

ES索引写入性能优化

喜夏-厌秋 提交于 2020-02-04 10:29:10
最近一直想总结一篇es的优化文章,看了几篇博客,总结一下,方便以后遇上es线上优化问题有参考之处: 1、用bulk批量写入 es批量写入时,应该使用es的bulk写入,bulk写入还是应该考虑es的node数,shard分片数。业务中尽量将写入es的数据聚合起来分批写入。 bulk批量写入的性能比你一条一条写入大量的document的性能要好很多。但是如果要知道一个bulk请求最佳的大小,需要对单个es node的单个shard做压测。先bulk写入100个document,然后200个,400个,以此类推,每次都将bulk size加倍一次。如果bulk写入性能开始变平缓的时候,那么这个就是最佳的bulk大小。并不是bulk size越大越好,而是根据你的集群等环境具体要测试出来的,因为越大的bulk size会导致内存压力过大,因此最好一个请求不要发送超过10mb的数据量。 先确定一个是 bulk size ,此时就尽量是单线程,一个 es node,一个shard ,进行测试。看看单线程最多一次性写多少条数据,性能是比较好的。 2、使用多线程将数据写入es 单线程发送bulk请求是无法最大化es集群写入的吞吐量的。如果要利用集群的所有资源,就需要使用多线程并发将数据bulk写入集群中。为了更好的利用集群的资源,这样 多线程并发写入,可以减少每次底层磁盘fsync的次数和开销

MySQL读书笔记-数据页格式

旧街凉风 提交于 2020-02-04 10:00:14
数据页格式 field description File Header 文件头 Page Header 页头 Infimum + Supremun Record User Records 用户记录,即行记录 Free Space 空闲空间 Page Directory 页目录 File Trailer 文件结尾信息 File Header 总共38字节。 field size description FIL_PAGE_SOACE_OR_SUM 4 4.0.14之前为0 4.0.14之后为当页的 checksum FIL_PAGE_OFFSET 4 表空间中页的偏移量 FIL_PAGE_PREV 4 上一页 FIL_PAGE_NEXT 4 下一页 FIL_PAGE_LSN 8 最后被修改日志序列 LSN FIL_PAGE_TYPE 2 innodb 存储引擎页类型 FIL_PAGE_FILE_FLUSH_LSN 8 仅在系统表空间中有定义 独立表空间为0 FIL_PAGE_ARCH_NO_OR_SPACE_ID 4 4.1开始,表示该页属于哪个表空间 其中存储页类型如下 name hex description FIL_PAGE_INDEX 0x45BF B + B^+ B + 树叶节点 FIL_PAGE_UNDO_LOG 0x0002 undo log 页 FIL_PAGE

Java类文件结构

断了今生、忘了曾经 提交于 2020-02-04 09:03:43
概述 Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现“一词编写,到处运行”。这些虚拟机和平台统一使用的程序存储格式就是字节码(ByteCode)。 代码编译的结果从本地机器码转变为字节码。 实现语言无关性的基础是虚拟机和字节码存储格式,Java虚拟机不和任何语言绑定,只和“Class文件”这种特定的二进制文件格式所关联。作为一个通用的,与机器无关的执行平台,其他语言都可以将Java虚拟机作为语言的产品交付媒介。 Class类文件结构 任何一个Class文件都对应唯一一个类或接口的定义信息,但类和接口并不一定都定义在文件里(比如类或接口也可以通过类加载器直接生成)。Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列,没有任何分隔符。当遇到需要占用8位字节以上空间的数据项时,则按照高位在前的方式分割成若干8位字节进行存储。 Class文件格式类似于C语言结构体的伪结构,包括无符号数和表。 ClassFile { u4 magic; //Class 文件的标志 u2 minor_version;//Class 的小版本号 u2 major_version;//Class 的大版本号 u2 constant_pool_count;//常量池的数量 cp_info

oracle组合索引整理

泄露秘密 提交于 2020-02-04 07:44:58
最近刚好又聊到了组合索引,由于担心自己记忆的不准确就实践了一番,结果发现和百度的好像不太一样,对此有疑惑的我,于是写下了这篇文章,希望对大家有用。 第一种情况:组合索引(主键) 1、建表 -- CREATE TABLE CREATE TABLE A ( AID NUMBER NOT NULL, ACOU NUMBER NOT NULL, ACOUA CHAR(30) NOT NULL ) TABLESPACE BDCK PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED ); -- CREATE/RECREATE PRIMARY, UNIQUE AND FOREIGN KEY CONSTRAINTS ALTER TABLE A ADD CONSTRAINT PA PRIMARY KEY (AID, ACOU, ACOUA) USING INDEX TABLESPACE BDCK PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED ); 2、数据生成,我用的PLSQL的数据生成工具 3、索引测试