Hello!

You are running SqlFieldsQuery on client node here, but you are checking
metric on server. Metrics are per-node local.

Regards,
-- 
Ilya Kasnacheev


пн, 1 февр. 2021 г. в 14:16, 38797715 <38797...@qq.com>:

> It's amazing, let's simplify the problem.
>
> 1.Start a node using the following configuration file
> <beans xmlns="http://www.springframework.org/schema/beans";
> <http://www.springframework.org/schema/beans>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> <http://www.w3.org/2001/XMLSchema-instance> xsi:schemaLocation="
> http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd";>
> <bean id="ignite.cfg" class=
> "org.apache.ignite.configuration.IgniteConfiguration">
> <property name="peerClassLoadingEnabled" value="true"/>
> <property name="metricExporterSpi">
> <list>
> <bean class="org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi"/>
> </list>
> </property>
> </bean>
> </beans>
>
> 2.Use sqlline to connect the current cluster:
>
> ./sqlline.sh --verbose=true -u jdbc:ignite:thin://localhost
>
> 3.Execute the following SQL in the
> `apache-ignite-2.9.1-bin/examples/sql/world.sql`file:
> CREATE TABLE City (
> ID INT,
> Name VARCHAR,
> CountryCode CHAR(3),
> District VARCHAR,
> Population INT,
> PRIMARY KEY (ID, CountryCode)
> ) WITH "template=partitioned, backups=1, affinityKey=CountryCode,
> CACHE_NAME=City, KEY_TYPE=demo.model.CityKey, VALUE_TYPE=demo.model.City";
> INSERT INTO City(ID, Name, CountryCode, District, Population) VALUES (1,
> 'Kabul','AFG','Kabol',1780000);
>
> 4.Execute the following code:
>         IgniteConfiguration cfg = new IgniteConfiguration();
>         cfg.setClientMode(true);
>         cfg.setPeerClassLoadingEnabled(true);
>         cfg.setMetricExporterSpi(new SqlViewMetricExporterSpi());
>         Ignite ignite = Ignition.start(cfg);
>
>         IgniteCache cache = ignite.cache("City");
>
>         String sql = "SELECT count(*) FROM CITY;";
>         cache.query(new SqlFieldsQuery(sql)).getAll();
> 5.Execute the following SQL in the SQLLine:
> select * from sys.metrics where name like 'cache.City.Query%';
> 6.Got it!
>
> 在 2021/2/1 下午4:39, Ilya Kasnacheev 写道:
>
> Hello!
>
> No, this is not correct.
>
> Even if table is created through JDBC, nodes will collect metrics for its
> SqlFieldsQuery's:
> | cache.SQL_PUBLIC_PERSON.QueryCompleted | 2
>                              |                                |
> | cache.SQL_PUBLIC_PERSON.QueryExecuted | 2                              |
>                                |
> | cache.SQL_PUBLIC_PERSON.QueryFailed | 0                              |
>                                |
> | cache.SQL_PUBLIC_PERSON.QueryMaximumTime | 63
>                             |                                |
> | cache.SQL_PUBLIC_PERSON.QueryMinimalTime | 21
>                             |                                |
> | cache.SQL_PUBLIC_PERSON.QuerySumTime | 84                             |
>                                |
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> сб, 30 янв. 2021 г. в 05:10, 38797715 <38797...@qq.com>:
>
>> Hello Ilya,
>>
>> I got it.
>> If the table is created through JDBC, the metric data will be 0.
>> Only when the CREATE TABLE statement is executed through SqlFieldsQuery,
>> the data will be counted.
>>
>> I think it's a bug,Ilya, can you confirm again?
>> 在 2021/1/30 上午12:06, Ilya Kasnacheev 写道:
>>
>> Hello!
>>
>> I can see some values on the server when executing SqlFieldsQuery on the
>> same server:
>> | cache.foo.QueryCompleted       | 3                              |
>>                                |
>> | cache.foo.QueryExecuted        | 3                              |
>>                                |
>> | cache.foo.QueryFailed          | 0                              |
>>                                |
>> | cache.foo.QueryMaximumTime     | 350                            |
>>                                |
>> | cache.foo.QueryMinimalTime     | 101                            |
>>                                |
>> | cache.foo.QuerySumTime         | 665                            |
>>                                |
>>
>> I can also see them on client, but you need to a) specify
>> ClientConnectorConfiguration on client node with non-default port, b)
>> connect to that port with JDBC, and c) Enable metrics exporter SPI on the
>> client node. Then I can see the same, after running SqlFieldQuery's on
>> client:
>> | cache.foo.QueryCompleted       | 3                              |
>>                                |
>> | cache.foo.QueryExecuted        | 3                              |
>>                                |
>> | cache.foo.QueryFailed          | 0                              |
>>                                |
>> | cache.foo.QueryMaximumTime     | 269                            |
>>                                |
>> | cache.foo.QueryMinimalTime     | 20                             |
>>                                |
>> | cache.foo.QuerySumTime         | 424                            |
>>                                |
>>
>> Regards,
>> --
>> Ilya Kasnacheev
>>
>>
>> чт, 28 янв. 2021 г. в 14:42, 38797715 <38797...@qq.com>:
>>
>>> Hello Ilya,
>>>
>>> if use sqlline execute sql, the feedback result of the following
>>> statement is correct.
>>>
>>> SELECT * FROM sys.metrics WHERE name LIKE 'sql%' ORDER BY name;
>>>
>>> I used SqlFieldsQuery again to do the above tests, and the results were
>>> all 0. I think there may be a issue in this.
>>> 在 2021/1/28 下午6:52, Ilya Kasnacheev 写道:
>>>
>>> Hello!
>>>
>>> I think these metrics will be gathered for ScanQuery/SqlFieldsQuery
>>> executed via native Java Query API, but they will not be gathered for
>>> statements executed via JDBC.
>>>
>>> One obvious reason is that Java Query API's queries are bound to a
>>> specific cache. JDBC query is not bound to specific cache: JDBC query may
>>> operate on zero or more caches. We could map these queries back to
>>> participating caches, but I don't see that we do that.
>>>
>>> You could still  use sql.queries.user. metrics:
>>> SELECT * FROM sys.metrics WHERE name LIKE 'sql%' ORDER BY name;
>>>
>>> Regards,
>>> --
>>> Ilya Kasnacheev
>>>
>>>
>>> ср, 27 янв. 2021 г. в 15:29, 38797715 <38797...@qq.com>:
>>>
>>>> Hello Ilya,
>>>>
>>>> The test method is as follows:
>>>>
>>>> Start 2 nodes on the localhost.
>>>> Use the CREATE TABLE statement to create a table;
>>>> Use the COPY command to load some data;
>>>> Access to cluster through sqlline;
>>>> Execute select count (*) from T;
>>>> Execute select * from sys.metrics  WHERE name LIKE '%cache.T%';
>>>> At this time, you will find that the relevant data are all 0, but the
>>>> value of OffHeapEntriesCount is still correct.
>>>>
>>>> If you use sqlline to access another node, the result is the same.
>>>>
>>>> The configuration file to start the cluster is as follows:
>>>> <bean id="ignite.cfg" class=
>>>> "org.apache.ignite.configuration.IgniteConfiguration">
>>>> <property name="peerClassLoadingEnabled" value="true"/>
>>>> <property name="consistentId" value=
>>>> "#{systemEnvironment['CONSISTENTID']}"/>
>>>> <property name="metricExporterSpi">
>>>> <list>
>>>> <bean class="org.apache.ignite.spi.metric.sql.SqlViewMetricExporterSpi"
>>>> />
>>>> </list>
>>>> </property>
>>>> <property name="cacheConfiguration">
>>>> <list>
>>>> <bean id="partitioned-cache-template" abstract="true" class=
>>>> "org.apache.ignite.configuration.CacheConfiguration">
>>>> <property name="name" value="cache-partitioned*"/>
>>>> <property name="cacheMode" value="PARTITIONED" />
>>>> <property name="backups" value="0" />
>>>> <property name="statisticsEnabled" value="true"/>
>>>> <property name="queryParallelism" value="2"/>
>>>> <property name="partitionLossPolicy" value="READ_WRITE_SAFE"/>
>>>> </bean>
>>>> <bean id="replicated-cache-template" abstract="true" class=
>>>> "org.apache.ignite.configuration.CacheConfiguration">
>>>> <property name="name" value="cache-replicated*"/>
>>>> <property name="cacheMode" value="REPLICATED" />
>>>> <property name="statisticsEnabled" value="true"/>
>>>> <property name="partitionLossPolicy" value="READ_WRITE_SAFE"/>
>>>> </bean>
>>>> </list>
>>>> </property>
>>>> <!-- Enabling Apache Ignite Persistent Store. -->
>>>> <property name="dataStorageConfiguration">
>>>> <bean class="org.apache.ignite.configuration.DataStorageConfiguration">
>>>> <property name="metricsEnabled" value="true"/>
>>>> <property name="defaultDataRegionConfiguration">
>>>> <bean class="org.apache.ignite.configuration.DataRegionConfiguration">
>>>> <property name="persistenceEnabled" value="true"/>
>>>> <property name="metricsEnabled" value="true"/>
>>>> <property name="maxSize" value="#{2L * 1024 * 1024 * 1024}"/>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> </property>
>>>> </bean>
>>>> 在 2021/1/27 下午6:24, Ilya Kasnacheev 写道:
>>>>
>>>> Hello!
>>>>
>>>> These values are per-node, as far as I know. Is it possible that you
>>>> have connected to a node which does not handle any queries (as reducer,
>>>> anyway)?
>>>>
>>>> Regards,
>>>> --
>>>> Ilya Kasnacheev
>>>>
>>>>
>>>> вт, 26 янв. 2021 г. в 13:48, 38797715 <38797...@qq.com>:
>>>>
>>>>> Hi,
>>>>>
>>>>> We found that SYS.METRICS View some data is always 0, such as
>>>>> QueryCompleted,QueryExecuted,QuerySumTime,QueryCompleted,QuerySumTime
>>>>> and QueryMaximumTime. This is a bug? Or what configuration is needed?
>>>>> Or
>>>>> the related functions have not been implemented yet?
>>>>>
>>>>>

Reply via email to