Ignite 点燃缓存/查询占用太多时间
我正试图采用ignite,通过实现内存中的数据网格来解决我的一个需求 没错,我正在使用第三种持久性读/写机制从oracle db获取数据,在我的拓扑结构中,我在激活的集群中使用一个节点,该集群托管在一个具有8G ram和120 G hdd的VM中 我的节点使用本地存储,堆内内存为2G,堆外内存为50G,所有这些都启用了逐出和交换Ignite 点燃缓存/查询占用太多时间,ignite,gridgain,Ignite,Gridgain,我正试图采用ignite,通过实现内存中的数据网格来解决我的一个需求 没错,我正在使用第三种持久性读/写机制从oracle db获取数据,在我的拓扑结构中,我在激活的集群中使用一个节点,该集群托管在一个具有8G ram和120 G hdd的VM中 我的节点使用本地存储,堆内内存为2G,堆外内存为50G,所有这些都启用了逐出和交换 DataStorageConfiguration dataStorageCfg = new DataStorageConfiguration(); DataRegio
DataStorageConfiguration dataStorageCfg = new DataStorageConfiguration();
DataRegionConfiguration dataRegionCfg = new DataRegionConfiguration();
// 2G initial size (RAM).
dataRegionCfg.setInitialSize(2L * 1024 * 1024 * 1024);
// 40 GB max size (RAM).
dataRegionCfg.setMaxSize(40L * 1024 * 1024 * 1024);
// Enabling RANDOM_LRU eviction for this region.
dataRegionCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU);
//dataRegionCfg.setPersistenceEnabled(true);
final String swapPath ="/opt/ignite/swap";
dataRegionCfg.setSwapPath(swapPath);
dataStorageCfg.setDefaultDataRegionConfiguration(dataRegionCfg);
cfg.setDataStorageConfiguration(dataStorageCfg);
在我的机器上缓存这个会占用太多时间
缓存结束时,我的交换文件夹大约为13G
关于我的SQL查询,没有响应
我的工具中的同一查询需要1分钟45秒才能响应,但使用ignite缓存查询方法不会响应,也不会出现任何错误或异常
SqlFieldsQuery sqlQuery;
FieldsQueryCursor<List<?>> queryCursor;
Iterator<List<?>> resultIt;
System.out.println(">>> All caches loaded! in : " + total + " ms");
System.out.println("---------------------------------------------- ");
System.out.println("---------------------------------------------- ");
System.out.println("---------------------------------------------- ");
System.out.println("\\n \\n \\n ");
System.out.println("---------------------------------------------- ");
System.out.println("---------------------------------------------- ");
System.out.println("---------------------------------------------- ");
System.out.println("Checking join query POC first run");
start = System.currentTimeMillis();
sqlQuery = new SqlFieldsQuery(sql);
queryCursor = ignite.cache("MInoutlineCache").query(sqlQuery);
System.out.println("query result size is : "+queryCursor.getAll().size());
end = System.currentTimeMillis() - start;
total += end;
SqlFieldsQuery-sqlQuery;
FieldsQueryCursor>resultIt;
System.out.println(“>>>加载的所有缓存!输入:“+total+”ms”);
System.out.println(“-------------------------------------------------------------”;
System.out.println(“-------------------------------------------------------------”;
System.out.println(“-------------------------------------------------------------”;
System.out.println(“\\n\\n\\n”);
System.out.println(“-------------------------------------------------------------”;
System.out.println(“-------------------------------------------------------------”;
System.out.println(“-------------------------------------------------------------”;
System.out.println(“Checking-join-query-POC-first-run”);
start=System.currentTimeMillis();
sqlQuery=newsqlfieldsquery(sql);
queryCursor=ignite.cache(“MInoutlineCache”).query(sqlQuery);
System.out.println(“查询结果大小为:”+queryCursor.getAll().size());
结束=System.currentTimeMillis()-开始;
总数+=结束;
我用点火器好吗?以单节点的方式使用ignite有用吗,或者我打算以分区策略构建包含大量节点的集群
缓存的行数为1000万行
在我的上下文中,是否有其他方法可以使用第三种持久性策略实现良好的内存中数据网格
这个问题有很多问题对不起
NB:我正在使用网格增益控制台生成配置
我还将缓存模式名称更新为public,以便直接执行查询
这是一个问题
SELECT bp.name,
CF.documentno,
CF.MOVEMENTDATE,
CF.m_product_id AS M_PRODUCT_ID,
CF.product,
CF.xx_lignegratuite,
CF.m_attributesetinstance_id,
CASE
WHEN cf.isreturntrx='Y'
THEN - CF.qtyentered
ELSE CF.qtyentered
END AS qtyentered,
CF.discount,
CF.DOCSTATUS,
CF.ISRETURNTRX,
CF.XX_REWARDAMT,
CF.OperID,
CF.clientId,
CASE
WHEN cf.xx_lignegratuite='N'
THEN
CASE
WHEN cf.isreturntrx='Y'
THEN -cf.prixVente*cf.qtyentered* (1-(cf.discount/100))
ELSE cf.prixVente*cf.qtyentered* (1-(cf.discount/100))
END
ELSE 0
END AS totalline,
CASE
WHEN cf.XX_StartegicalProduct='Y'
THEN (
CASE
WHEN cf.xx_lignegratuite='N'
THEN
CASE
WHEN cf.isreturntrx='Y'
THEN -cf.prixVente*cf.qtyentered* (1-(cf.discount/100))
ELSE cf.prixVente*cf.qtyentered* (1-(cf.discount/100))
END
ELSE 0
END)
ELSE 0
END AS totallineStar,
CASE
WHEN cf.xx_lignegratuite='N'
THEN
CASE
WHEN cf.typevente='W'
THEN
CASE
WHEN cf.isreturntrx='Y'
THEN -(cf.XX_REWARDAMT/nb_doc)
ELSE cf.XX_REWARDAMT/nb_doc
END
ELSE 0
END
ELSE 0
END AS totalreward,
CF.XX_StartegicalProduct,
CF.SALESREP_ID,
CF.C_DOCTYPE_ID,
CF.AD_ORG_ID,
CF.ad_orgtrx_id,
CF.xx_laboratory_id,
bp.c_bpartner_id,
CF.nb_doc,
CF.rate,
CF.poste_id,
CF.SalesRepTier_poste_id,
CF.recSupr,
CF.recSupr_poste_id,
(SELECT Objectif_CA_oper
FROM c_bpartner
WHERE issalesrep ='Y'
AND isemployee ='Y'
AND c_bpartner_id=CF.SalesRepTier
) AS ObjectifOp,
(SELECT Objectif_CA_oper
FROM c_bpartner
WHERE issalesrep ='Y'
AND isemployee ='Y'
AND c_bpartner_id=CF.SalesRepTier_poste_id
) AS ObjectifOp_poste_id,
CASE
WHEN cf.ISRETURNTRX='Y'
THEN -cf.QTYENTERED*prixRevient
ELSE cf.QTYENTERED*prixRevient
END AS consomation
FROM
(SELECT i.documentno,
i.MOVEMENTDATE,
p.m_product_id,
p.name AS product,
ol.xx_lignegratuite,
il.m_attributesetinstance_id,
il.qtyentered,
ol.discount,
i.DOCSTATUS,
i.isreturntrx,
ol.XX_REWARDAMT,
i.C_BPartner_ID AS clientId,
(SELECT u.C_BPARTNER_ID FROM AD_User u WHERE u.AD_User_ID = i.SALESREP_ID
) AS OperID,
(SELECT ai.Valuenumber
FROM M_AttributeInstance ai
INNER JOIN M_Attribute a
ON (ai.M_Attribute_ID =a.M_Attribute_ID
AND a.IsInstanceAttribute ='Y')
WHERE ai.M_AttributeSetInstance_ID=il.m_attributesetinstance_id
AND a.Name ='Prix Vente'
) AS prixVente,
(SELECT ai.Valuenumber
FROM M_AttributeInstance ai
INNER JOIN M_Attribute a
ON (ai.M_Attribute_ID =a.M_Attribute_ID
AND a.IsInstanceAttribute ='Y')
WHERE ai.M_AttributeSetInstance_ID=il.m_attributesetinstance_id
AND a.Name ='Prix Revient'
) AS prixRevient,
(SELECT ai.Valuenumber
FROM M_AttributeInstance ai
INNER JOIN M_Attribute a
ON (ai.M_Attribute_ID =a.M_Attribute_ID
AND a.IsInstanceAttribute ='Y')
WHERE ai.M_AttributeSetInstance_ID=il.m_attributesetinstance_id
AND a.Name ='Fournisseur'
) AS Fournisseur,
XX_StartegicalProduct,
i.SALESREP_ID,
i.C_DOCTYPE_ID,
i.AD_ORG_ID,
(SELECT o.AD_ORGTRX_ID
FROM c_order o
WHERE i.c_order_id=o.c_order_id
) AS ad_orgtrx_id,
p.xx_laboratory_id,
lt.rate,
--COUNT(*) over (partition BY il.c_orderline_id) AS nb_doc,
(
SELECT COUNT(*)
FROM m_inoutline ill
WHERE ill.c_orderline_id=il.c_orderline_id
) AS nb_doc,
ol.type AS typevente,
bpl.salesrep_id AS poste_id,
(SELECT u.c_bpartner_id FROM AD_User u WHERE u.AD_User_ID = i.salesrep_id
) AS SalesRepTier,
(SELECT u.c_bpartner_id FROM AD_User u WHERE u.AD_User_ID = bpl.salesrep_id
) AS SalesRepTier_poste_id,
(SELECT u.XX_RecSupervisor_ID FROM AD_User u WHERE u.AD_User_ID=i.SALESREP_ID
) AS recSupr,
(SELECT u.XX_RecSupervisor_ID
FROM AD_User u
WHERE u.AD_User_ID=bpl.salesrep_id
) AS recSupr_poste_id
FROM m_inoutline il
INNER JOIN m_inout i
ON il.m_inout_id=i.m_inout_id
INNER JOIN c_orderline ol
ON ol.c_orderline_id=il.c_orderline_id
INNER JOIN m_product p
ON p.m_product_id=il.m_product_id
INNER JOIN C_Bpartner bpl
ON (bpl.c_bpartner_id=i.c_bpartner_id)
LEFT OUTER JOIN xx_listetauxvaleur lt
ON p.xx_listetauxvaleur_id = lt.xx_listetauxvaleur_id
WHERE i.issotrx ='Y'
--AND p.m_attributeset_id IS NOT NULL
AND il.movementqty<>0
) CF
LEFT OUTER JOIN c_bpartner bp
ON (CF.Fournisseur=bp.c_bpartner_id)
ORDER BY bp.name,
documentno;
选择bp.name,
参考文献号:,
参见MOVEMENTDATE,
比照m_产品id作为m_产品id,
比照产品,
CF.xx_木质素纤维板,
CF.m\u属性持续状态\u id,
案例
当cf.isreturntrx='Y'
然后-CF.qtyentered
否则,请参见qtyentered
以qtyenter结束,
比照折扣,
参见DOCSTATUS,
参见ISRETURNTRX,
CF.XX_报酬金额,
CF.OperID,
比照clientId,
案例
当cf.xx_lignegratuite='N'
然后
案例
当cf.isreturntrx='Y'
然后-cf.prixVente*cf.qtyentered*(1-(cf.折扣/100))
其他cf.prixVente*cf.qtyentered*(1-(cf.折扣/100))
结束
其他0
以全数结束,
案例
当cf.XX_StartegicalProduct='Y'
然后(
案例
当cf.xx_lignegratuite='N'
然后
案例
当cf.isreturntrx='Y'
然后-cf.prixVente*cf.qtyentered*(1-(cf.折扣/100))
其他cf.prixVente*cf.qtyentered*(1-(cf.折扣/100))
结束
其他0
(完)
其他0
以全日制之星结束,
案例
当cf.xx_lignegratuite='N'
然后
案例
当cf.typevente='W'
然后
案例
当cf.isreturntrx='Y'
然后-(参见XX\u报酬金额/nb\u单据)
其他参见XX\u报酬金额/nb\u单据
结束
其他0
结束
其他0
作为奖励结束,
CF.XX_StartegicalProduct,
参见SALESREP_ID,
CF.C_DOCTYPE_ID,
CF.AD_ORG_ID,
参考ad_orgtrx_id,
参考xx实验室id,
英国石油公司合伙人身份证,
参见nb_文件,
比照汇率,
参见poste_id,
参见SalesRepTier\u poste\u id,
CF.recSupr,
CF.recSupr\u poste\u id,
(选择“操作对象”
来自c_bpartner
issalesrep='Y'在哪里
还有我的雇员
c_bpartner_id=CF.SalesRepTier
)作为目标,
(选择“操作对象”
来自c_bpartner
issalesrep='Y'在哪里
还有我的雇员
c_bpartner_id=CF.SalesRepTier_poste_id
)作为目标邮政id,
案例
当cf.ISRETURNTRX='Y'
然后-cf.QTYENTERED*prixRevient
否则,请参见QTYENTERED*prixRevient
以辅音结尾
从…起
(选择i.documentno,
i、 移动日期,
p、 m_产品id,
p、 产品名称,
ol.xx_木质素降解剂,
il.m_属性持续id,
伊尔·克蒂耶特德,
ol.折扣,
i、 文件状态,
i、 isreturntrx,
ol.XX_报酬金额,
i、 C_b合伙人作为客户ID,
(从AD_用户u中选择u.C_b合作伙伴_ID,其中u.AD_用户_ID=i.SALESREP_ID)
)作为歌剧演员,
(选择ai.Valuenumber
来自M_AttributeInstance ai
内部连接M_属性a
ON(ai.M_属性\u ID=a.M_属性\u ID
和a.IsInstanceAttribute='Y')
其中ai.M_attributestation_ID=il.M_attributestation_ID
和a.Name='Prix Vente'
)作为prixVente,
(选择ai.Valuenumber
来自M_AttributeInstance ai
内部连接M_属性a
ON(ai.M_属性\u ID=a.M_属性\u ID
和a.IsInstanceAttribute='Y')
其中ai.M_attributestation_ID=il.M_attributestation_ID
和a.Name='Prix Revient'
)作为前辈,
(选择ai.Valuenumber
来自M_AttributeInstance ai
内部连接M_属性a
ON(ai.M_属性\u ID=a.M_属性\u ID
和a.IsInstanceAttribute='Y')
其中ai.M_attributestation_ID=il.M_attributestation_ID
还有一个名字叫“Fourniseur”
)作为Fourniseur,
XX_Startegic