索引

小程序的相关配置

时间秒杀一切 提交于 2020-01-27 02:15:19
目录 1、project 和 sitemap 配置 2、全局配置 app 3、局部配置 page 小程序的很多开发需求被规定在了配置文件中,这样做可以更有利于提高的开发效率,并且可以保证开发出来的小程序的某些风格是比较一致的,比如导航栏、顶部TabBar,以及页面路由等等。 小程序中有很多配置,其大致可以分为三类:(1)project 和 sitemap 配置(2)全局配置 app(3)局部配置 page。下面具体对这几种配置进行说明,这是小程序官方文档关于相关配置的链接: 配置小程序 1、project 和 sitemap 配置 (1)project.config.json :项目配置文件,比如项目名称、appid 等; 这个配置文件记录了小程序的一些关于项目的相关配置(在小程序开发工具的详情按钮中可以对一些配置进行修改),其实早期的小程序项目是没有这个配置文件的,但是如果没有这个配置文件就会出现 多端配置不一致的问题 。比如当你和同事协同开发一款小程序的时候,他用的是 2.7.0 版本开发的,而你默认的是 2.7.1 版本,这种情况就需要其中一个人进行手动配置,这样会造成不必要的麻烦,因此微信考虑到了这种情况,保证一个项目中只有一种配置,这就是 project.config.json 的作用。 (2)sitemap.json :小程序搜索相关的配置;

数据库设计(三)之数据库维护与优化

眉间皱痕 提交于 2020-01-27 02:03:39
维护与优化中要做什么 一.维护数据字典 1.使用第三方工具对数据字典进行维护 2.利用数据库本身的制备柱字段来维护数据字典 二.维护索引 如何选择合适的列建立索引 1.出现在WHERE从句,GROUP BY从句,OREDER BY从句中的列 2.可选择性高的列要放到索引的前面 3.索引中不要包括太长的数据类型。只使用前16个字节进行索引,或者太大的字段,进行md5转换,再去进行索引 注意事项: 1.索引并不是越多越好,过多的索引不但会降低写效率,而且会降低读的效率。 每写一条记录,都要对索引进行维护,维护的成本就大。 读操作,因为SQL优化器会根据索引信息和统计信息来选择适合sql的索引。如果索引太多,SQL优化器选择索引的过程会影响效率 2.定期维护索引碎片 索引的创建和维护存在消耗,索引会占用物理空间,且随着数据量的增加而增加。 3.在SQL语句中 不要使用 强制索引关键字。 由于数据量的变化原来使用的索引,可能以后就不适用。如果使用强制索引,会影响数据库效率,如果删除该索引,开发人员不知道,查询就会出错。 三.维护表结构 注意事项: 1.使用在线变更结构的工具 不同种类的触发器可以存在于同一个表,但同种类的不能有多个。 2.同时对数据字典进行维护 3、控制表的宽度和大小 数据库中适合操作 1.批量操作VS逐条操作 数据库中适合批量操作,逐条操作适合在程序中完成 2

消息消费队列和索引文件的更新

自作多情 提交于 2020-01-27 00:29:42
ConsumeQueue,IndexFile需要及时更新,否则无法及时被消费,根据消息属性查找消息也会出现较大延迟。 mq通过开启一个线程ReputMessageService来准时转发commitLog文件更新事件,相应的任务处理器根据转发的消息及时更新ConsumeQueue,IndexFile文件 DefaultMessageStore#start ReputMessageService线程每执行一次任务推送休息1毫秒旧继续尝试推送消息到消息消费队列和索引文件。 返回reputFromOffset偏移量开始的全部有效数据,然后循环读取每一条消息。 在DefaultMessageStore的构造方法中: topic:消息主题名称 queueId:消息队列ID commitLogOffset:消息物理偏移量 msgSize:消息长度 tagsCode:消息过滤tag hashcode storeTimestamp:消息存储时间戳 consumeQueueOffset:消息队列偏移量 key:消息索引 success:是否成功解析道完整的消息 uniqKey:消息唯一键 sysFlag:消息系统标记 preparetransactionOffset:消息预处理事务偏移量 propertiesMap:消息属性 bitMap:位图 根据消息主题与队列ID

my39_InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析

自古美人都是妖i 提交于 2020-01-26 21:22:16
MySQL InnoDB支持三种行锁定方式: 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key。 间隙锁(Gap Lock): 锁定索引记录间隙,确保索引记录的间隙不变。间隙锁是针对事务隔离级别为可重复读或以上级别而已的。 Next-Key Lock :行锁和间隙锁组合起来就叫Next-Key Lock。 默认情况下,InnoDB工作在可重复读隔离级别下,并且会以Next-Key Lock的方式对数据行进行加锁,这样可以有效防止幻读的发生。 Next-Key Lock是行锁和间隙锁的组合,当InnoDB扫描索引记录的时候,会首先对索引记录加上行锁(Record Lock),再对索引记录两 边的间隙加上间隙锁(Gap Lock)。加上间隙锁之后,其他事务就不能在这个间隙修改或者插入记录。 Gap Lock在InnoDB的唯一作用就是防止其他事务的插入操作,以此防止幻读的发生。 行锁(Record Lock) 行锁锁定的是索引记录,而不是行数据,也就是说锁定的是key。 间隙锁(Gap Lock) 例如: create table test(id int,v1 int,v2 int,primary key(id),key `idx_v1`(`v1`))Engine=InnoDB DEFAULT CHARSET=UTF8; insert into test

索引的统计信息

霸气de小男生 提交于 2020-01-26 20:20:31
索引的统计信息 使用索引统计信息(Index Statistics)优化查询语句,提高查询效率。 查询优化统计信息的概念 查询优化的统计信息是一些对象,这些对象包含与值在表或索引视图的一列或多列中的分布有关的统计信息。查询优化器使用这些统计信息来估计查询结果中的基数或行数。通过这些基数估计,查询优化器可以创建高质量的查询计划。例如,查询优化器可以使用基数估计选择索引查找运算符而不是耗费更多资源的索引扫描运算符,从而提高查询性能。 每个统计信息对象都在包含一个或多个表列的列表上创建,并且包括显示值在第一列中的分布的直方图。在多列上的统计信息对象也存储与各列中的值的相关性有关的统计信息。这些相关性统计信息(或密度)根据列值的不同行的数目派生。 使用数据库范围的统计信息选项 自动创建统计信息选项 AUTO_CREATE_STATISTICS 和自动更新统计信息选项 AUTO_UPDATE_STATISTICS 默认为 ON,我们建议使用这一默认值来用于大多数用户数据库。您可以使用以下 SELECT 语句来为所有用户数据库查看这些选项的当前值: SELECT name AS "Name", is_auto_create_stats_on AS "Auto Create Stats", is_auto_update_stats_on AS "Auto Update Stats", is

MySQL数据库优化

好久不见. 提交于 2020-01-26 19:35:02
一、MySQL 会遇到的问题:   1、 高并发的读写效率低问题 ---- 解决方案:集群,分布式。   2、 海量数据的读写效率低问题 ----- 解决方案:分表,分库。   3、 高可用和高扩展 ---- 解决方案:动态扩展服务器、防止单点故障、容灾。 二、关系型数据库优化:(原则: 先单机,后多机。 )   2.1 单机 优化方案 :     1.慢SQL的定义--> 分析慢SQL -- 解决慢SQL。         2. 表的设计、索引、引擎的优化。   3. 分表(垂直分表、水平分表)、分区、分库 的优化。    4. 缓存做集群。     5.SQL语句优化      2.2 多机优化方案 (分为多个数据库):     1. 读写分离(要保证 主从同步 ):        28 原则:如果有10个数据库,则 2 个专门做增删改的数据库, 8 个专门做查询的数据库。     2. 缓存做集群 三、定位慢SQL     3.1 查看数据库状态:     3.1.1 查看运行时间: show status like ‘uptime’;     3.1.2 CRUD 执行次数:       Show status like ‘Com_%’;       Show status like ‘Com_update%’       Show status like ‘Com

数据保护平台如何为新一代应用,人工智能和数据科学提供动力

只愿长相守 提交于 2020-01-26 19:29:21
我最坚信的信念之一是,通过有效地构建,管理和发展其数据供应链来学习如何充分利用其数据的公司将获得持久的竞争优势。现在拥有如此多的数据,公司必须将其数据视为其最有价值的资产之一。这些数据供应链必须像其他任何系统或分发网络一样平稳运行。 然而,数据供应链提出了独特的挑战。要使数据供应链无缝运行非常困难,因为它必须从许多来源收集数据,将其提炼成有用的形式,然后能够根据需要将特定的子集交付给业务。数据不是万能的,因此您的数据供应链必须像数据多样化一样灵活。 为了构建最佳的数据供应链,公司应识别其库存中已拥有的资产。这是他们经常忽略的仓库,因为几乎每家公司都有一个存储库,可悲的是,它没有充分利用作为业务洞察力的来源:备份。 备份不仅需要放在架子上,而且仅在其他数据丢失时才可以拉入。实际上,它们可以推动创新。怎么样?好了,现在所谓的数据保护的整个过程变得更加复杂。在本故事中,我们将以Commvault为例,说明数据保护系统如何创建一个集中而全面的数据存储库,该存储库不仅可以用作备份,还可以成为使用数据存储新方法的基础。创造价值。 换句话说,我们将探索现代数据保护平台如何帮助您构建和运行支持新类型的应用程序,人工智能和数据科学的数据供应链。 数据保护如何成为一个全面的数据平台 过去,数据保护全都与备份有关。我们都记得软盘,以及80年代后期的高科技电影如何无法避免涉及备份状态的戏剧性变化

全文索引Sphinx和sphinx的中文分词(一)

南笙酒味 提交于 2020-01-26 17:46:00
1.Sphinx是什么 Sphinx是有俄罗斯人Andrew Aksyonoff 开发的一个 全文检索引擎 ( 计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个 索引 ,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式 )。意图为其他应用提供高速、低空间占用、高结果相关度的全文搜索功能。Sphinx可以非常容易的与SQL数据库和脚本语言集成。当前系统内置 Mysql 和PostgreSQL数据库数据源的支持,也支持从标准输入读取特定格式的XML数据。通过修改源代码,用户可以自行增加新的数据源(例如:其他类型的DBMS的原生支持) Sphinx是基于SQL的全文检索引擎,可以结合MySQL,PostgreSQL做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。Sphinx特别为一些脚本语言设计搜索API接口,如PHP,Python,Perl,Ruby等,同时为MySQL也设计了一个存储引擎插件。 Sphinx 单一索引最大可包含1亿条记录,在1千万条记录情况下的查询速度为 0.x秒(毫秒级) 。Sphinx创建索引的速度为:创建100万条记录的索引只需 3~4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引

MySQL 索引总结

别等时光非礼了梦想. 提交于 2020-01-26 15:56:02
1、索引是做什么的? 想象一下,你面前有本词典,数据就是书的正文内容,你就是那个cpu,而索引,则是书的目录 索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。 表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达一个位置去搜寻到数据文件的中间,没有必要看所有数据。 大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B树中存储。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。 2、索引越多越好? 大多数情况下索引能大幅度提高查询效率,但: 数据的变更(增删改)都需要维护索引,因此更多的索引意味着更多的维护成本 更多的索引意味着也需要更多的空间 (一本100页的书,却有50页目录?) 过小的表,建索引可能会更慢 (读个2页的宣传手册,你还先去找目录?) 3、索引的字段类型问题 text类型,也可建索引(需指定长度) myisam存储引擎索引键长度综合不能超过1000字节 用来筛选的值尽量保持和索引列同样的数据类型 尽量减少like,但不是绝对不可用,"xxxx%" 是可以用到索引的, 想象一下,你在看一本成语词典,目录是按成语拼音顺序建立,查询需求是,你想找以 "一"字开头的成语("一%"),和你想找包含一字的成语("%一%")

Python序列应用知识回顾

混江龙づ霸主 提交于 2020-01-26 15:51:07
Python序列应用 1.序列 序列是一块用于存放多个值的连续内存空间,并且按一定顺序排列。序列结构有列表、元组、集合、字典和字符串。Python对序列中列表、元组、字符串有索引、切片、相加和相乘操作,可以通过关键字in检查某个元素是否为序列的成员。 (1)索引 序列中的每个元素都有一个编号被称为索引,通过索引可以访问序列中的任何元素。索引类似C语言数组中的下标从0开始表示第一个元素,依次递增,但 索引可以为负数 ,例如:-1表示最后一个元素。 (2)切片 切片是访问序列中元素的一种方法,可以访问一定范围内的元素。通过切片可以生成一个新的序列。格式如下: name[start:end:step] ''' name:表示序列的名称 start:表示切片开始的位置 end:表示切片的截止位置 step:表示切片的步长 ''' 通过切片可以截取序列上任意一处的信息,比如一个字符串可以通过切片生成另外一个字符串;一个列表可以通过切片,输出指定位置的元素。可以说是很方便的功能。 (3)相加和相乘 Python中,多个相同类型的序列可以相加成一个新序列。一个序列可以乘以一个数字n,也会生成一个重复这个序列元素n次的新序列。 2.列表 Python中的列表是由一系列特定顺序排列的元素组成的,是可变序列。列表元素可以是整数、实数、字符串、列表、元组等。创建列表格式: \\name =