Please see the attachment. I have set query parallelism to 30. it took 42 seconds. But it is not enough. I excepted it took less than 3 seconds.
then,I have 3 nodes. As for the 3589 number, we need to check the number of ID using in conditions. Only the number of times used is equal to the record in the in condition. That's the record we need. This is the business scenario required. I can't change this. Thanks for your suggestion. Lucky 2017年09月18日 21:55,Vladimir Ozerov<voze...@gridgain.com> : Hi Lucky, Could you please share you data model and node/cache configuration? I want to make sure that proper indexes are set. I will be able to advise something then. As I quick suggestion you may try to increase query parallelism on your "databaseDAssignCache". Please try setting it to the number of cores on your server nodes. Relevant property - CacheConfifuration.queryParallelism. Btw, how many nodes do you have? Also I am struggling to understand the number "3589". Why this number appears both as ">= 3589" condition and as a number of parameters inside "IN" clause? Vladimir.
package com.kingdee.ignite.module.basedata.customer.entity; import java.io.Serializable; import java.sql.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name = "t_Bd_Databasedassign") public class DatabaseDAssign implements Serializable { private static final long serialVersionUID = 7117461037272988577L; @QuerySqlField(index = true) private String FID; @QuerySqlField private String FCREATORID; @QuerySqlField private Date FCREATETIME; @QuerySqlField private String FLASTUPDATEUSERID; @QuerySqlField private Date FLASTUPDATETIME; @QuerySqlField private String FCONTROLUNITID; @QuerySqlField(index=true, orderedGroups={@QuerySqlField.Group( name = "IX_BDFW_DBDAACUD", order = 1), @QuerySqlField.Group( name = "IX_BDFW_FASS", order = 2)}) private String FDATABASEDID; @QuerySqlField(index = true, orderedGroups={@QuerySqlField.Group( name = "IX_BDFW_DBDAACUD", order = 0), @QuerySqlField.Group( name = "IX_BDFW_FASS", order = 0)}) private String FASSIGNCUID; @QuerySqlField(orderedGroups={@QuerySqlField.Group( name = "IX_BDFW_FASS", order = 1)}) private String FBOSOBJECTTYPE; @QuerySqlField private Integer FSTATUS; /********** Getters and Setters ******************/ @Id @GeneratedValue(generator = "personGenerator") @GenericGenerator(name = "personGenerator", strategy = "assigned") @Column(name = "FID") public String getFID() { return FID; } public void setFID(String id) { this.FID = id; } @Column(name = "FCONTROLUNITID") public String getFCONTROLUNITID() { return FCONTROLUNITID; } public void setFCONTROLUNITID(String fCONTROLUNITID) { FCONTROLUNITID = fCONTROLUNITID; } @Column(name = "FLASTUPDATETIME") public Date getFLASTUPDATETIME() { return FLASTUPDATETIME; } public void setFLASTUPDATETIME(Date fLASTUPDATETIME) { FLASTUPDATETIME = fLASTUPDATETIME; } @Column(name = "FLASTUPDATEUSERID") public String getFLASTUPDATEUSERID() { return FLASTUPDATEUSERID; } public void setFLASTUPDATEUSERID(String fLASTUPDATEUSERID) { FLASTUPDATEUSERID = fLASTUPDATEUSERID; } @Column(name = "FCREATETIME") public Date getFCREATETIME() { return FCREATETIME; } public void setFCREATETIME(Date fCREATETIME) { FCREATETIME = fCREATETIME; } @Column(name = "FCREATORID") public String getFCREATORID() { return FCREATORID; } public void setFCREATORID(String fCREATORID) { FCREATORID = fCREATORID; } @Column(name = "FDATABASEDID") public String getFDATABASEDID() { return FDATABASEDID; } public void setFDATABASEDID(String fDATABASEDID) { FDATABASEDID = fDATABASEDID; } @Column(name = "FASSIGNCUID") public String getFASSIGNCUID() { return FASSIGNCUID; } public void setFASSIGNCUID(String fASSIGNCUID) { FASSIGNCUID = fASSIGNCUID; } @Column(name = "FBOSOBJECTTYPE") public String getFBOSOBJECTTYPE() { return FBOSOBJECTTYPE; } public void setFBOSOBJECTTYPE(String fBOSOBJECTTYPE) { FBOSOBJECTTYPE = fBOSOBJECTTYPE; } @Column(name = "FSTATUS") public Integer getFSTATUS() { return FSTATUS; } public void setFSTATUS(Integer fSTATUS) { FSTATUS = fSTATUS; } }
package com.kingdee.ignite.common.config; import javax.cache.configuration.MutableConfiguration; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.CacheWriteSynchronizationMode; import org.apache.ignite.configuration.CacheConfiguration; import com.kingdee.ignite.common.dao.SqlCustomFunction; public abstract class AbstractCacheConfiguration<K, V> extends CacheConfiguration<K, V>{ private static final long serialVersionUID = 6000710247906756326L; public AbstractCacheConfiguration(){ initialization(); } public void initialization(){ //设置é»è®¤å¤ä»½èç¹0 setDefaultBackups(); //设置é»è®¤ååºç¼å setDefaultCacheMode(); //设置é»è®¤åæ¥å¤ä»½ //çå¾ ä¸»èç¹çåæè æ交æä½å®æ //ä½æ¯ä¸çå¾ å¤ä»½èç¹æ´æ°å®æ setDefaultWriteSynchronizationMode(); //éå setDefaultWriteThrough(); //é»è®¤å¯ç¨åå setDefaultWriteBehindEnabled(); //é»è®¤å¯ç¨é读 setDefaultReadThrough(); //ååå·æ°é»è®¤è®¾ç½®ä¸º10240 setDefaultWriteBehindFlushSize(); //æ¯é10ç§ ååå·æ° setDefaultWriteBehindFlushFrequency(); //设置æä¹ åå°æ°æ®åºçè®°å½æ°ï¼10000 setWriteBehindBatchSize(); setWriteBehindFlushThreadCount(); //å平衡æ¶æ¯ç大å°ï¼è®¾ç½®ä¸º4M setRebalanceBatchSize(); setIndexedTypes(); //å平衡延è¿æ¶é´ï¼è®¾ç½®ä¸º100 ms setRebalanceThrottle(); //å®ä¹è·åbosUidçsqlå½æ° setSqlFunctionBosUid(); //æ¥è¯¢å¹¶è¡å super.setQueryParallelism(30); } /** * 使ç¨é»è®¤ååºæ¨¡å¼ * @return CacheConfigurationå®ä¾ */ public CacheConfiguration<K, V> setDefaultCacheMode() { CacheMode partitioned = CacheMode.PARTITIONED; return super.setCacheMode(partitioned); } /** * åºäºæ§è½åå , 设置å¤ä»½èç¹ä¸º1 * @return CacheConfigurationå®ä¾ */ public CacheConfiguration<K, V> setDefaultBackups() { return super.setBackups(1); } /** * é»è®¤è®¾ç½®å®¢æ·ç«¯èç¹ä¼çå¾ ä¸»èç¹çåæè æ交æ纵å®æï¼ä½ä¸ä¼çå¾ å¤ä»½èç¹çæ´æ°å®æ * @return CacheConfigurationå®ä¾ */ public CacheConfiguration<K, V> setDefaultWriteSynchronizationMode() { CacheWriteSynchronizationMode primarySync = CacheWriteSynchronizationMode.FULL_ASYNC; return super.setWriteSynchronizationMode(primarySync); } /** * 设置ååå¯ç¨ * @return CacheConfigurationå®ä¾ */ public CacheConfiguration<K, V> setDefaultWriteBehindEnabled() { return super.setWriteBehindEnabled(true); } /** * 设置é读å¯ç¨ * @return CacheConfigurationå®ä¾ */ public MutableConfiguration<K, V> setDefaultReadThrough() { return super.setReadThrough(true); } public MutableConfiguration<K, V> setDefaultWriteThrough() { return super.setWriteThrough(true); } /** * ååç¼åçæ大å¼ï¼å¦æè¶ è¿äºè¿ä¸ªéå¼ï¼ * ææçç¼åæ°æ®é½ä¼è¢«å·å ¥ç¼ååå¨ç¶ååç¼åè¢«æ¸ ç©ºã * å¦æå¼ä¸º0ï¼å·æ°æä½å°ä¼ä¾æ®å·æ°é¢çé´éï¼ * 注æä¸è½å°åç¼å大å°åå·æ°é¢çé½è®¾ç½®ä¸º0 * @return CacheConfigurationå®ä¾ */ public CacheConfiguration<K, V> setDefaultWriteBehindFlushSize() { return super.setWriteBehindFlushSize(10240); } public CacheConfiguration<K, V> setWriteBehindBatchSize() { return super.setWriteBehindBatchSize(10000); } public CacheConfiguration<K, V> setDefaultWriteBehindFlushFrequency() { return super.setWriteBehindFlushFrequency(10000); } public CacheConfiguration<K, V> setIndexedTypes(Class<?> clazz){ return super.setIndexedTypes(String.class,clazz); } public CacheConfiguration<K, V> setWriteBehindFlushThreadCount(){ return super.setWriteBehindFlushThreadCount(3); } public CacheConfiguration<K,V> setRebalanceBatchSize(){ return super.setRebalanceBatchSize(4*1024*1024); } public CacheConfiguration<K,V> setRebalanceThrottle(){ return super.setRebalanceThrottle(100); } public CacheConfiguration<K,V> setSqlFunctionBosUid(){ return super.setSqlFunctionClasses(SqlCustomFunction.class); } }