问题研究 项目中需要利用DataImportHandler从hive中sync数据到solr.发现有时候hive sql已经执行完几个小时了,sync任务还没有完成,貌似哪里卡住了.重启solr后重新sync又成功了,所以之前虽然遇到很多次这个问题也没有去深究.今天又出现了同样的问题,决定花点时间研究下到底是什么原因造成的. 利用jstack dump了几遍线程栈,发现很多个线程都卡在同一个地方,at java.net.SocketInputStream.socketRead0(Native M…
文章转自:http://www.cnblogs.com/zhengyun_ustc/p/slowquery2.html 写在前面的话: 之前曾说过"不要求每个人一定理解 联表查询(join/left join/inner join等)时的mysql运算过程",但对于字段选择性差意味着什么,组合索引字段顺序意味着什么,要求每个人必须了解: 重复上一次的话:把mysql客户端(如SQLyog,如HeidiSQL)放在桌面上,时不时拿出来 explain 一把,这是一种美德! 确保亲手查过S…
场景一,数据表规模不大,就几千行,即使不建索引,查询语句的返回时间也不长,这时建索引的意义就不大.当然,若就几千行,索引所占的空间也不多,所以这种情况下,顶多属于"性价比"不高. 场景二,某个商品表里有几百万条商品信息,同时每天会在一个时间点,往其中更新大概十万条左右的商品信息,现在用where语句查询特定商品时(比如where name = 'XXX')速度很慢.为了提升查询效率可以建索引,但当每天更新数据时,又会重建索引,这是要耗费时间的. 这时就需要综合考虑,甚至可以在更新前删除…
oracle中建索引可能大家都会,但是建索引是有几个选项参数却很少有人关注,在某些特殊环境下,可能会非常有用,下面一一说明: 1.NOSORT,记录排序可选项. 默认情况下,在表中创建索引的时候,会对表中的记录进行排序,排序成功后再创建索引.但是当记录比较多的是,这个排序作业会占用比较多的时间. 特殊情况下,我们就可以使用该参数加快建索引的速度. 例如: create index idx_scm_salaud_bill_hdr_relid on SCM_SALAUD_BILL_HDR (audr…
建索引时.我们为了建索引快.会加上并行,加上并行之后.此列索引就会是并行了. 訪问有并行度的索引时,CBO可能可能会考虑并行运行.这可能会引发一些问题,如在server资源紧张的时候用并行会引起更加严重的争用.当使用并行后,须要把并行度改回来. SQL> drop table test purge; SQL> create table test as select * from dba_objects; SQL> create index ind_t_object_id on test(…
最近有一个困惑,生产服务器上有一表索引建得乱七八糟,经过整理后需要新建几个索引,再删除几个索引,建立索引时使用联机(ONLINE=ON)创建,查看下服务器负载(磁盘和CPU压力均比较低的情况)后就选择业务时间创建,但是到删除索引时却遇到问题:阻塞,删除索引需要架构修改锁(SCH_M),有阻塞很正常,虽然查询使用NOLOCK提示降低了对其他会话的影响,但还是会在页或表上生成一些意向共享锁(IS),这些意向共享锁与SCH_M无法兼容,因此阻塞无可避免,悲催的是在该表上多个会话重复执行查询且该查询执行…
最近一直在做公司搜索的优化与维护,做完索引和搜索的分离之后,又有一个新需求,因为做的是歌曲方面的搜索,所以在数据库中有多个同歌名,同演唱者的的数据,这样在用户搜索的时候,会出来一大堆不同版本的歌曲,影响搜索质量,所以需要在建立索引库时做一个初步的过滤,因为只是一个简单的过滤,所以并不需要太精确. 首先呢是要确定哪些歌曲需要过滤,我调研后觉得对于同一歌名,同一演唱者的歌曲数量大于10时,就进行过滤,也即阀值为10,当然这个后期可以随时调整. 然后是需要确定过滤的维度,也即怎样确定一个歌曲就比另一个…
一.explain(),语句分析工具 MongoDB 3.0之后,explain的返回与使用方法与之前版本有了很大的变化,介于3.0之后的优秀特色和我们目前所使用给的是3.0.7版本,本文仅针对MongoDB 3.0+的explain进行讨论.3.0+的explain有三种模式,分别是:queryPlanner.executionStats.allPlansExecution.现实开发中,常用的是executionStats模式,主要分析这种模式. 给这个person集合创建age键的索引:db…
数据库建立索引常用的规则如下: 1.表的主键.外键必须有索引: 2.数据量超过300的表应该有索引: 3.经常与其他表进行连接的表,在连接字段上应该建立索引: 4.经常出现在Where子句中的字段,特别是大表的字段,应该建立索引: 5.索引应该建在选择性高的字段上: 6.索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引: 7.复合索引的建立需要进行仔细分析:尽量考虑用单字段索引代替: A.正确选择复合索引中的主列字段,一般是选择性较好的字段: B.复合索引的几个字段是否经常同时以A…
200 ? "200px" : this.width)!important;} --> 介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表,从“information_schema.INNODB_SYS_TABLES”系统表可以看到每个分区都存在独立的TABLE_ID,由于Innodb数据和索引都是保存在".ibd"文件当中(从INNODB_SYS_INDEXES系统表中也可以得到每个索引都是对应各自的分区(prim…
一,什么情况下使用索引1. 表的主关键字 自动建立唯一索引 2. 表的字段唯一约束 ORACLE利用索引来保证数据的完整性 3. 直接条件查询的字段 在SQL中用于条件约束的字段 如zl_yhjbqk(用户基本情况)中的qc_bh(区册编号) select * from zl_yhjbqk where qc_bh=’7001’ 4. 查询中与其它表关联的字段 字段常常建立了外键关系 如zl_ydcf(用电成份)中的jldb_bh(计量点表编号) select * from zl_ydcf a,z…
在创建Oracle索引时,有一些问题使我们需要注意的,下面就为您介绍创建oracle索引的一些注意事项,希望对您学习创建Oracle索引方面能有所帮助. 1.一般来说,不需要为比较小的表创建索引: 2.即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为其建立索引的必要.因为此时建立索引的开销可能要比性能的改善大的多.这个比例只是一个经验的数据.如果数据库管理员需要得出一个比较精确的结论,那么就需要进行测试分析. 3.如对于一些重复内容比较少的列,特别是对于那些定义了唯一约…
介绍 mysql分区后每个分区成了独立的文件,虽然从逻辑上还是一张表其实已经分成了多张独立的表,从“information_schema.INNODB_SYS_TABLES”系统表可以看到每个分区都存在独立的TABLE_ID,由于Innodb数据和索引都是保存在".ibd"文件当中(从INNODB_SYS_INDEXES系统表中也可以得到每个索引都是对应各自的分区(primary key和unique也不例外)),所以分区表的索引也是随着各个分区单独存储. 在INNODB_SYS_IN…
索引分类:从物理结构上可分为两种:聚集索引和非聚集索引 (此外还有空间索引.筛选索引.XML索引) 因为聚集索引是索引顺序与物理存储顺序一致,所以只能建一个. 聚集索引就是把数据按主键顺序存储: 因为一张表中的数据只能有一个物理顺序,所以一张表只能有一个主键/聚集索引. 非聚集索引可以建1或者N个. 并不是所有字段上都可以建索引,有的字段类型如text.image.nvarchar(max)等是不可以建索引的. sql语句有多个条件用and连接时,多个字段都有索引的话,顺序很重要. 索引是存在磁…
了解sql的朋友都知道,我们在查询的时候能够採用join查询,即对有一定关联关系的对象进行联合查询来对多维的数据进行整理.这个联合查询的方式挺方便的.跟我们现实生活中的托人找关系类似,我们想要完毕一件事.先找自己的熟人,然后通过熟人在一次找到其它,终于通过这样的手段找到想要联系到的人. 有点类似于"世间万物皆有联系"的感觉. lucene的join包提供了索引时join和查询时join的功能. Index-time join 大意是索引时join提供了查询时join的支持,且Index…
查询时,如果数据量很大,where 后面的条件与建索引的顺序相同,也没有什么多少差别,聚集索引稍微快点; 但where 后面的条件与建索引顺序不同,速度会慢下来,到底慢多少,不同的机器会不一样,没有绝对的说法. MSSQL引擎首先对条件进行优化,优化以后再查询.1,还是那句,先看执行计划.2.2008的话,对where的顺序它会自己优化,测试过,顺序对执行计划没有影响,不过2005好像有.所以从规范化来说,还是把筛选性高的放在where的前面,而不是考虑是否聚集索引3.对于建立索引,就有讲究了,…
   SQL 建索引的几大原则: 最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>.<.between.like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a,b,d的顺序可以任意调整. =和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询…
Java技术栈 www.javastack.cn 优秀的Java技术公众号 来源:小宝鸽 blog.csdn.net/u013142781/article/details/51706790 MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下. 一.存储引擎的比较 注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的. 在 MySQL 中,主要有四种类型的索引,分别为:B-Tree 索引, Hash 索引, Fulltext…
在了解了索引的基础知识及B+树索引的原理后(如需复习请点这里),这一节我们了解一下有哪些建索引的原则,来指导我们去建索引. 建索引的原则 1. 联合索引 我们可能听一些数据库方面的专业人士说过:"把 Where 条件里面的列都建上索引",从而给每个列给每个列建独立的索引,这个理解是非常错误的. 如果 Where 条件里有多种组合的查询条件,可以尝试建联合索引来减少索引数量,同时提升查询性能. 2. 覆盖索引 普通索引查到主键后,回到主键索引搜索的过程,称为回表. 当使用普通索引查询时,…
案例描述 这是在索引重组过程中遇到的有意思的错误案例,搜索了一下也没有看到相关资料,估计我第一个碰到这类错误的人(It's just a joke).具体情况是YourSQLDba在做维护数据库索引时遇到了索引重组错误,然后我排查时就发现了这个案例.我下面用一个简单的测试例子演示一下具体情况. 数据库版本: SQL SERVER 2005 CREATE TABLE TEST   (   ID     INT,   Name   VARCHAR(12)   );   CREATE NONCLUST…
因为: 源地址:https://zhidao.baidu.com/question/585392982737434725.html 一般建立索引会引起锁表,不允许进行数据更新等DML操作: 如果建立索引时指定关键字online,那么只会在表上加一个共享锁,仅不允许变更表的定义. 但可以对数据进行修改.…
说说复合索引 写索引的博客太多了,一直不想动手写,有一下两个原因:一是觉得有炒剩饭的嫌疑,有兄弟曾说:索引吗,只要在查询条件上建索引就行了,真的可以这么暴力吗?二来觉得,索引是个非常大的话题,很难概括出所有的情况,你不整出点新意来,倒是有抄袭照搬的嫌疑 既然写了,就写一点稍微不一样的东西出来,好了,废话打住,开搞 搭建测试环境: 创建一张表,模拟实际业务中的一个表,往里面填入数据,时间字段上,相对按照时间均匀地填充,其他字段以GUID填充 Create table BusinessInfoTab…
Atitit 如何利用先有索引项进行查询性能优化 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种:1 1.2. 范围查找 动态索引查找1 1.2.1. 索引联合 所谓的索引联合,就是根据就是根据筛选条件的不同,拆分成不同的条件,去匹配不同的索引项.2 1.3. 索引交叉2 1.1. 再分析的话就是我们所写的查询条件,其实大部分情况也无非以下几种: 1.等于谓词:select ...where...column=@parameter 2.比较谓词:select ...wh…
我们在学sqlserver的时候,大多教科书和前辈们都说状态少的字段不要建索引,由此带来的开销还不如不建索引,但是这句话有多少人真的知道, 或者说有多少人真的对此有比较深刻的理解,而不是听别人道听途说...这样记得快,忘记的也不慢...这篇我来分析一下这句话到底有几个意思. 一:现象 首先我们还是用测试数据来发现问题,我先建立一个Person,有5个字段,建表sql如下: DROP TABLE dbo.Person ),Age ),isMan INT ) -- 在isMan字段创建非聚集索引(0…
Lucene 是apache软件基金会一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎. Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎. 下载地址: http://www.apache.org/dyn/closer.cgi/lucene/java/4.10.1 1.建立lucene索引模块示例 package luceneL; import…
建表时如有一个QUAN类型的字段,那么就要给字段设置Reference field,参考的字段的Data Type要是UNIT, 并设置对应的Reference table,也就是参考字段所在的table,否则表不能被激活. 一般reference的字段是自已表的字段,当然,也可以是其它表的. 为什么数量类型的字段一定要参考一个单位字段呢? 是因为在SAP里面,数量和货币在没有单位时,是没有意义的,如1.5.7,我们不知道它代表什么, 加上单位后: 1PC我们知道是一台电脑, 5CNY,代表中国…
mysql workbench 建表时 - PK: primary key (column is part of a pk) 主键 - NN: not null (column is nullable) 非空 - UQ: unique (column is part of a unique key) 唯一 - AI: auto increment (the column is auto incremented when rows are inserted) 自增 - BIN: binary (i…
首先看官方文档上的解释: Managing External Tables Oracle Database allows you read-only access to data in external tables. External tables are definedas tables that do not reside in the database, and can be in any format forwhich an access driver is provided. By…
1,建索引非常easy.一行代码 g:/service/coreseek/bin/indexer -c g:/service/coreseek/etc/csft_mysql.conf   person 前面是你bin文件夹下的indexer程序 后面-c指后面会跟配置文件 然后是配置文件地址 最好都用绝对地址 在后面是索引 也能够用--all 即对配置文件的全部部分都做索引 然后写成一个批处理文件.这样比較方便. 2.如今就能够在命令行下做測试了. 測试英文:g:\service\coresee…
移除建表时自动加上s的复数形式 public class DBContext : DbContext { public DBContext() : base("name=DBContext") { } public DbSet<Province> Province { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { //移除自动建表时自动加上s的复数形式 m…