mysql搜索引擎相关知识
-
Docker在PHP项目开发环境中的应用环境部署是所有团队都必须面对的问题,随着系统越来越大,依赖的服务也越来越多,比如我们目前的一个项目就会用到:Web服务器:NginxWeb程序:PHP + Node数据库:MySQL搜索引擎:ElasticSearch队列服务:Gearman缓存服务:Redis + Memcache前端构建工具:npm + bower + gulpPHP CLI工具:Composer + PHPUnit因此团队的开发环境部署随之暴露出若干问题:依赖服务很多,本地搭建一套环境成本越来越高,初级人员很难解决环境部署中的一些问题服务的版本差异及OS的差异都可能导致线上环境BUG项目引入新的服务时所有人的环境需要重新配置对于问题1,可以用Vagrant这样的基于虚拟机的项目来解决,团队成员共享一套开发环境镜像。对于问题2,可以引入类似PHPBrew这样的多版本PHP管理工具来解决。但两者都不能很好地解决问题3,因为虚拟机镜像没有版本管理的概念,当多人维护一个镜像时,很容易出现配置遗漏或者冲突,一个很大的镜像传输起来也不
-
Docker在PHP项目开发环境中的应用环境部署是所有团队都必须面对的问题,随着系统越来越大,依赖的服务也越来越多,比如我们目前的一个项目就会用到:Web服务器:NginxWeb程序:PHP + Node数据库:MySQL搜索引擎:ElasticSearch队列服务:Gearman缓存服务:Redis + Memcache前端构建工具:npm + bower + gulpPHP CLI工具:Composer + PHPUnit因此团队的开发环境部署随之暴露出若干问题:依赖服务很多,本地搭建一套环境成本越来越高,初级人员很难解决环境部署中的一些问题服务的版本差异及OS的差异都可能导致线上环境BUG项目引入新的服务时所有人的环境需要重新配置对于问题1,可以用Vagrant这样的基于虚拟机的项目来解决,团队成员共享一套开发环境镜像。对于问题2,可以引入类似PHPBrew这样的多版本PHP管理工具来解决。但两者都不能很好地解决问题3,因为虚拟机镜像没有版本管理的概念,当多人维护一个镜像时,很容易出现配置遗漏或者冲突,一个很大的镜像传输起来也不方便。Doc
-
搜索引擎ElasticSearch入门前言 最近项目上需要用到搜索引擎,由于之前自己没有了解过,所以整理了一下搜索引擎的相关概念知识。 正文 想查数据就免不了搜索,搜索就离不开搜索引擎,百度、谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据。然而对于我们自己的业务数据来说,肯定就没必要用这么复杂的技术了,如果我们想实现自己的搜索引擎,方便存储和检索,可以快速地储存、搜索和分析海量数据。搜索引擎有很多种,我这里主要讲两种比较流行的搜索引擎框架 Elasticsearch 和 Luc
-
实时搜索引擎ElasticsearchElasticsearch是什么?简称ES,是一个基于Apache Lucene(TM)的开源搜索引擎,Elasticsearch不仅仅是Lucene和全文搜索引擎,它还提供:1)分布式的实时文件存储,每个字段都被索引并可被搜索 2)实时分析的分布式搜素引擎 3)可以扩展到上百台服务器,处理PB级计够化或非结构化数据Elasticsearch涉及的重要概念?1)接近实时(NRT)2)集群(cluster)3)节点(node)4)索引(index)5)类型(type)6)文档(document)7)分片与复制8)mapping主要包括:字段名、字段数据类型、字段索引类型大类包含的小类StringstringWhole numberbyte, short, integer, longFloating pointfloat, doubleBooleanbooleanDatedate字段索引类型:索引是ES中的核心,ES中,字段如果不简历索引,则就不能以则会个字段作为查询条件来搜
mysql搜索引擎相关课程
mysql搜索引擎相关教程
- 1.索引概念 索引在 MySQL 中也叫“键(Key)”,是存储引擎用于快速查找记录的一种数据结构,这也是索引的基本功能。MySQL 索引的工作原理,类似一本书的目录,如果要在一本书中找到特定的知识点,先通过目录找到对应的页码。在 MySQL 中,存储引擎用类似的方法使用索引,先在索引找到对应值,再根据索引记录找到对应的数据行。简单总结,索引就是为了提高数据查询的效率,跟一本书的目录一样。以下查询假设字段 c2 上建有索引,则存储引擎将通过索引找到 c2 等于 测试01 的行。也就是说,存储引擎先在索引按值进行查找,再返回所有包含该值的数据行。mysql> select * from t1 where c2='测试01'\G*************************** 1. row ***************************c1: 1c2: 测试011 row in set (0.00 sec)从执行计划的角度,也可以看出索引 idx_c2 被使用:mysql> create table t1( -> c1 int not null auto_increment, -> c2 varchar(10) default null, -> primary key(c1) -> ) engine = innodb;Query OK, 0 rows affected (0.05 sec)mysql> insert into t1() values(1,'测试01');Query OK, 1 row affected (0.00 sec)mysql> create index idx_c2 on t1(c2);Query OK, 0 rows affected (0.02 sec)Records: 0 Duplicates: 0 Warnings: 0mysql> explain select * from t1 where c2='测试01'\G*************************** 1. row *************************** id: 1 select_type: SIMPLE table: t1 partitions: NULL type: refpossible_keys: idx_c2 key: idx_c2 key_len: 33 ref: const rows: 1 filtered: 100.00 Extra: Using index1 row in set, 1 warning (0.00 sec)常见的索引类型主要有 B-Tree 索引、哈希索引、空间数据索引(R-Tree)、全文索引,在后续小节将详细介绍。InnoDB 和 MyISAM 存储引擎可以创建 B-Tree 索引,单列或多列都可以创建索引;Memory 存储引擎可以创建哈希索引,同时也支持 B-Tree 索引;从 MySQL5.7 开始,InnoDB 和 MyISAM 存储引擎都可以支持空间类型索引;InnoDB 和 MyISAM 存储可以支持全文索引(FULLTEXT),该索引可以用于全文搜索,仅限于CHAR、VARCHAR、TEXT 列。
- 1. MySQL 存储引擎概述 MySQL 的存储引擎是插件式的,用户可以根据实际的应用场景,选择最佳的存储引擎。MySQL默认支持多种存储引擎,以适应不同的应用需求。MySQL 5.7 支持的存储引擎有:InnoDB、MyISAM、MEMORY、CSV、MERGE、FEDERATED 等。从 5.5.5 版本开始,InnoDB 成为 MySQL 的默认存储引擎,也是当前最常用的存储引擎,5.5.5 版本之前,默认引擎为 MyISAM。创建新表时,如果不指定存储引擎,MySQL 会使用默认存储引擎。使用以下命令,查看数据库当前的默认引擎:mysql> show variables like 'default_storage_engine';+------------------------+--------+| Variable_name | Value |+------------------------+--------+| default_storage_engine | InnoDB |+------------------------+--------+1 row in set (0.00 sec)使用以下命令,查看数据库当前所支持的存储引擎:mysql> show engines\G*************************** 1. row *************************** Engine: MEMORY Support: YES Comment: Hash based, stored in memory, useful for temporary tablesTransactions: NO XA: NO Savepoints: NO*************************** 2. row *************************** Engine: CSV Support: YES Comment: CSV storage engineTransactions: NO XA: NO Savepoints: NO*************************** 3. row *************************** Engine: MRG_MYISAM Support: YES Comment: Collection of identical MyISAM tablesTransactions: NO XA: NO Savepoints: NO*************************** 4. row *************************** Engine: BLACKHOLE Support: YES Comment: /dev/null storage engine (anything you write to it disappears)Transactions: NO XA: NO Savepoints: NO*************************** 5. row *************************** Engine: InnoDB Support: DEFAULT Comment: Supports transactions, row-level locking, and foreign keysTransactions: YES XA: YES Savepoints: YES*************************** 6. row *************************** Engine: PERFORMANCE_SCHEMA Support: YES Comment: Performance SchemaTransactions: NO XA: NO Savepoints: NO*************************** 7. row *************************** Engine: ARCHIVE Support: YES Comment: Archive storage engineTransactions: NO XA: NO Savepoints: NO*************************** 8. row *************************** Engine: MyISAM Support: YES Comment: MyISAM storage engineTransactions: NO XA: NO Savepoints: NO*************************** 9. row *************************** Engine: FEDERATED Support: NO Comment: Federated MySQL storage engineTransactions: NULL XA: NULL Savepoints: NULL9 rows in set (0.00 sec)每一行的含义大致如下:Engine:存储引擎名称;Support:不同值的含义为:DEFAULT:表示支持并启用,为默认引擎;YES:表示支持并启用;NO:表示不支持;DISABLED:表示支持,但是被数据库禁用。Comment:存储引擎注释;Transactions:是否支持事务;XA:是否支持XA分布式事务;Savepoints:是否支持保存点。创建表时,ENGINE 关键字表示表的存储引擎。如下例子中,表 a 的存储引擎为 InnoDB,表 b 的存储引擎为 MyISAM。mysql> create table a (id int) ENGINE = InnoDB;Query OK, 0 rows affected (0.01 sec)mysql> create table b (id int) ENGINE = MyISAM;Query OK, 0 rows affected (0.01 sec)也可以使用 show table status 命令查看表的相关信息。mysql> show table status like 'a'\G*************************** 1. row *************************** Name: a Engine: InnoDB Version: 10 Row_format: Dynamic Rows: 1 Avg_row_length: 16384 Data_length: 16384Max_data_length: 0 Index_length: 0 Data_free: 0 Auto_increment: NULL Create_time: 2020-04-21 02:29:06 Update_time: 2020-04-29 00:24:17 Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)每一行的含义大致如下:Name:表名;Engine:表的存储引擎类型;Version:版本号;Row_format:行的格式Rows:表中的行数;Avg_row_length:平均每行包含的字节数;Data_length:表数据的大小(单位字节);Max_data_length:表数据的最大容量;Index_length:索引的大小(单位字节);Data_free:已分配但目前没有使用的空间,可以理解为碎片空间(单位字节);Auto_increment:下一个 Auto_increment 值;Create_time:表的创建时间;Update_time:表数据的最后修改时间;Check_time:使用check table命令,最后一次检查表的时间;Collation:表的默认字符集和字符列排序规则;Checksum:如果启用,保存的是整个表的实时校验和;Create_options:创建表时指定的其他选项;Comment:表的一些额外信息。
- 2.1 不同引擎的数据结构 面试官提问: MySQL 中 InnoDB 存储引擎底层的数据结构是什么?题目解析:以 MySQL 5.7 为例,首先查询官方文档,可以发现存储引擎和索引数据结构的对应关系,例如 InnoDB 对应 BTREE 索引,MEMORY 存储引擎对应哈希索引和 BTREE 索引,注意这里的 BTREE 实际指代的是 B+ 树,我们重点关注树的数据结构。存储引擎和索引类型的对应关系,表格来自 MySQL 5.7 官网
- 2. MyISAM 存储引擎 MyISAM 存储引擎是 MySQL 5.5.8 版本以前默认使用的存储引擎,其不支持事务,MyISAM 存储引擎表由 MYD 和 MYI 组成,其中 MYD 用来存放数据的文件,MYI 用来存放索引的文件。下面通过一个建表 sql 来新建一个 MyISAM 存储引擎类型的数据表:CREATE TABLE `test_my` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `age` int(10) unsigned NOT NULL, `id_number` varchar(18) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `email` varchar(50) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;执行结果如下图 :Tips:注意:对于 MyISAM 存储引擎, MySQL 数据库只缓存索引文件,数据库的数据文件由操作系统完成。
- 1. B-Tree 索引 B-Tree 索引是最常见的索引之一,当大家在谈论索引的时候,如果没有特别说明,那多半说的就是 B-Tree 索引。在 MySQL 中,大多数的存储引擎都支持 B-Tree 索引。
- MySQL 存储引擎概述 MySQL 数据库提供了独有的插件式存储引擎,常见存储引擎有 InnoDB、MyISAM、NDB、Memory、Archive、Federated、Maria 等等,并且不同的存储引擎有着完全不同的功能,建表的时候可以指定存储引擎的类型,若不指定存储引擎类型,MySQL8.0 默认的存储引擎就是 InnoDB。
mysql搜索引擎相关搜索
-
mac osx
machine_start
macox
magellan
malloc
manifest
manifest文件
map
map 遍历
mapreduce编程
maps google com
margin
margin bottom
margin left
margin right
margin top
marginbottom
marginheight
marginleft
margintop