索引

Elasticsearch基本概念

我们两清 提交于 2020-02-09 15:35:12
1、Index索引、Node节点 开发关注数据的索引,运维关注的节点情况及物理情况 2、文档(Document) 3、JSON文档 4、文档元数据 5、索引 6、Type 7、关系型数据库与ElasticSearch 数据结构对比 8、ElasticSearch 是怎么实现跨平台 ElasticSearch 支持REST API ,所有开发语言都可以调用 9、Index 相关 API 在如下api 命令需要在 Kibana Dev Tools 执行,相关KIbana安装配置及demo数据导入详见 https://blog.csdn.net/qq_36918149/article/details/104224625 Dev Tools 中调用 Elasticsearch api 一些简单api用法 #查看索引相关信息 GET kibana_sample_data_ecommerce #查看索引的文档总数 GET kibana_sample_data_ecommerce/_count #_cat indices API #查看indices GET /_cat/indices/kibana*?v&s=index #查看状态为绿的索引 GET /_cat/indices?v&health=green #按照文档个数排序 GET /_cat/indices?v&s=docs.count

JavaScript原型模式(prototype)

末鹿安然 提交于 2020-02-09 14:51:49
1.原型是一个对象,其他对象可以通过它实现属性的继承所有对象在默认的情况下都有一个原型,因为原型的本身也是对象,所以一个类的真正原型是被类的内部[prototype]属性所指出。每个函数都有一个属性叫做prototype,这个prototype的属性值是一个对象(属性的集合),默认的只有一个叫做constructor的属性,指向这个函数本身。 如上图,SuperType是是一个函数,右侧的方框就是它的原型。 注:上图来自 http://www.cnblogs.com/wangfupeng1988/p/3978131.html2.什么可以称之为对象?在JavaScript中一个对象:就是任何的无序的键值对的集合function var a={}如果他不是一个主数据类型(undefined null boolean number string)其他的通通叫做对象。 JavaScript中的原型(prototype)是和函数(function紧密相连的)var o={} 他不是有用function他有原型吗? 答:必须的每一个通过new操作符生成出来的对象都持有一个属性__proto__,这个属性保存了创建他的构造函数的prototype的原型的引用。 类的扩展方式有两类共三种: 说明一下,是在原型链上层扩展出来的。两类:分为是否是function定义的类分为两种

suoyin

我与影子孤独终老i 提交于 2020-02-09 12:30:38
1. 什么是索引? 索引是一种数据结构,可以帮助我们快速的进行数据的查找. 2. 索引是个什么样的数据结构呢? 索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3. Hash索引和B+树所有有什么区别或者说优劣呢? 首先要知道Hash索引和B+树索引的底层实现原理: hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据.B+树底层实现是多路平衡查找树. 对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据. 那么可以看出他们有以下的不同: hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询. 因为在hash索引中经过hash函数建立索引之后,索引的顺序与原顺序无法保持一致,不能支持范围查询.而B+树的的所有节点皆遵循(左节点小于父节点,右节点大于父节点,多叉树也类似),天然支持范围. hash索引不支持使用索引进行排序,原理同上. hash索引不支持模糊查询以及多列索引的最左前缀匹配.原理也是因为hash函数的不可预测. AAAA 和 AAAAB 的索引没有相关性. hash索引任何时候都避免不了回表查询数据,而B+树在符合某些条件

mysql锁机制

大城市里の小女人 提交于 2020-02-09 07:07:11
一、相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁(抽象性,不真实存在这个锁) |--乐观锁(抽象性,不真实存在这个锁) 二、InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB 。查看当前存储引擎: show variables like '%storage_engine%'; MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高。当然同时它也不会存在死锁问题。 而 InnoDB 与 MyISAM 的最大不同有两点:一是 InnoDB 支持事务;二是 InnoDB 采用了行级锁。也就是你需要修改哪行,就可以只锁定哪行。 在 Mysql 中,行级锁并不是直接锁记录,而是锁索引。索引分为主键索引和非主键索引两种,如果一条sql 语句操作了主键索引,Mysql 就会锁定这条主键索引;如果一条语句操作了非主键索引,MySQL会先锁定该非主键索引,再锁定相关的主键索引。 InnoDB 行锁是通过给索引项加锁实现的,如果没有索引,InnoDB 会通过隐藏的聚簇索引来对记录加锁。也就是说:如果不通过索引条件检索数据,那么InnoDB将对表中所有数据加锁

小心设计数据库:让数据库变快的10个建议

混江龙づ霸主 提交于 2020-02-09 05:21:31
小心设计数据库:让数据库变快的10个建议 大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。 大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。 小心设计数据库 第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。 来源: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/ 清楚你需要优化的地方 如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子: EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table

让数据库变快的10个建议

限于喜欢 提交于 2020-02-09 03:31:00
http://database.51cto.com/art/201203/324833.htm 大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。 0. 小心设计数据库 第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。 譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。 新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。 来源: http://www.simple-talk.com/sql/database-administration/ten-common-database-design-mistakes/ 1. 清楚你需要优化的地方 如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。采用EXPLAIN语句,你将获得很多有用的信息,下面来看个例子: EXPLAIN SELECT * FROM ref_table,other_table WHERE ref_table.key_column=other_table. column ; 来源: http://dev.mysql.com/doc/refman/5.0/en

mysql数据库索引

人盡茶涼 提交于 2020-02-09 03:26:31
1.数据库索引是什么? 为了加速对表中数据行的检索而创建的一种分散存储的数据结构 2.为什么要用索引? ●索引能极大的减少存储引擎需要扫描的数据量 ●索引能把随机I0变成顺序I0 ●在进行分组与排序时索引可以让我们避免使用临时表 为什么不每一列都创建索引 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。 3.mysql索引的原则 (1)列的离散型:count(distinct col) 重复的列 离散性好越好,选择越好 (2)最左匹配原则 从左到右依次匹配且不能跳过 4. MySQL为什么选择B+tree 这里有一个创建二叉树或者b树的网站,可以自己去玩一下 https://www.cs.usfca.edu/~galles/visualization/Algorithms.html 网站样子如下: (1)二叉查找树 规则: (1)非叶子节点只能允许最多两个子节点存在。 (2

让数据库变快的10个建议

可紊 提交于 2020-02-09 03:24:49
大多数网站的内容都存在数据库里,用户通过请求来访问内容。数据库非常的快,有许多技巧能让你优化数据库的速度,使你不浪费服务器的资源。在这篇文章中,我收录了十个优化数据库速度的技巧。SQL培训 0. 小心设计数据库 第一个技巧也许看来理所当然,但事实上大部分数据库的问题都来自于设计不好的数据库结构。 譬如我曾经遇见过将客户端信息和支付信息储存在同一个数据库列中的例子。对于系统和用数据库的开发者来说,这很糟糕。 新建数据库时,应当将信息储存在不同的表里,采用标准的命名方式,并采用主键。 1. 清楚你需要优化的地方SQL培训 如果你想优化某个查询语句,清楚的知道这个语句的结果是非常有帮助的。采用EXPLAIN语句,你将获得很多有用的信息。 2. 最快的查询语句…是那些你没发送的语句 每次你向数据库发送一条语句,你都会用掉很多服务器资源。所以在很高流量的网站中,最好的方法是将你的查询语句缓存起来。 有许多种缓存语句的方法,下面列出了几个: AdoDB: AdoDB是一个PHP的数据库简化库。使用它,你可以选用不同的数据库系统(MySQL, PostGreSQL, Interbase等等),而且它就是为了速度而设计的。AdoDB提供了简单但强大的缓存系统。还有,AdoDB拥有BSD许可,你可以在你的项目中免费使用它。对于商业化的项目,它也有LGPL许可。 Memcached

Python列表(List)及常用方法

☆樱花仙子☆ 提交于 2020-02-09 02:07:49
Python列表是常用的数据类型,主要说一下一些常用的方法 序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 Python有6个序列的内置类型,但最常见的是列表和元组。 序列都可以进行的操作包括索引,切片,加,乘,检查成员。 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可 1:初始化 names = ['a','b','c','d'] print(names) 运行结果: ['a', 'b', 'c', 'd'] 2:元素访问以及切片 #访问索引位置为2的元素值 print(names[2]) #最后一个位置 print(names[-1]) #切片只能从左往右names[1:3],起始位置为第一个参数,结束位置为第二个参数减1 print(names[1:3]) #访问索引位置0到3的元素 print(names[:3]) #访问索引位置-2到-1的元素 print(names[-2:]) #第三个参数就是每隔2索引访问一个元素 print(names[::2]) 运行结果: c ['b', 'c

(六)Python列表、元组、列表推导式

…衆ロ難τιáo~ 提交于 2020-02-09 01:23:25
列表对象及其方法 列表 [] 是Python的内置数据结构之一,拥有强大的功能。 列表是 包含若干元素的连续内存存储空间 ,列表中 每个元素储存的也是对值的引用 ,所以列表中每一个元素可以是任意类型的对象,比如数字类型,元组类型,列表类型等等。 1. 列表创建与删除 直接使用赋值运算和方括号 lst = [elem,...] 就可以创建列表对象 还可以使用 list() 函数将一些可迭代对象转换成列表对象 >> > lst = [ 1 , 2 , 3 ] >> > lst [ 1 , 2 , 3 ] >> > type ( lst ) list >> > type ( range ( 10 ) ) range >> > list ( range ( 10 ) ) [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] 使用 del 命令可以删除列表或者删除列表中的元素 >> > l = list ( range ( 5 ) ) >> > del l [ 0 ] >> > l [ 1 , 2 , 3 , 4 ] >> > del l >> > l - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -