First, 1700 TPS given your transaction structure is 170000 simple
operations per second, which is quite substantial - especially if you're
doing that from a single thread / single ODBC client.

Second, note that TRANSACTIONAL_SNAPSHOT is in beta and is not ready for
production use. There are no claims about performance or stability of that
cache mode.

Third, you don't need the index on key01 - it is created automatically
because it is a primary key. But you do need to set INLINE SIZE of the
default index. Run your Ignite server with system property or environment
varialy IGNITE_MAX_INDEX_PAYLOAD_SIZE=64.

Finally, the operations you're doing don't look like something to be done
with SQL. Consider using key-value API in Ignite C++ instead -
https://apacheignite-cpp.readme.io/docs.

Stan

On Sat, Nov 2, 2019 at 8:15 PM Evgenii Zhuravlev <[email protected]>
wrote:

> Hi,
>
> Do you use only one ODBC client? Can you start one more ODBC client and
> check the performance?
>
> Thanks,
> Evgenii
>
> сб, 2 нояб. 2019 г. в 16:47, Siew Wai Yow <[email protected]>:
>
>> Hi,
>>
>> We are doing POC on ignite performance using ODBC driver but the
>> performance is always capped at around 1700 TPS which is too slow. It is
>> local ignite service. All tuning tips from Ignite page has been applied, no
>> bottleneck from CPU and Memory. At the moment not turn on persistence yet,
>> it will be worse if turn on. This POC is very crucial to our product
>> roadmap.
>>
>> Any tips? Thank you.
>>
>> Test case,
>> 1 x insert --> 49 x select -->49 x update --> 1 x delete
>> repeat for 50000 times.
>>
>> *    const char* insert_sql = "insert into CDRTEST
>> values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";*
>> *    const char* update_sql = "update CDRTEST set
>> value01=?,value02=?,value03=?,value04=?,value05=?,value21=?,value22=?,value23=?,value24=?,value25=?
>> where key01=?";*
>> *    const char* delete_sql = "delete from CDRTEST where key01=?";*
>> *    const char* select_sql = "select value01 from CDRTEST where
>> key01=?";*
>>
>> *    retcode = SQLExecDirect(hstmt,
>> reinterpret_cast<SQLCHAR*>(const_cast<char*>("CREATE TABLE IF NOT EXISTS
>> CDRTEST ( "*
>> *  "key01 VARCHAR PRIMARY KEY, "*
>> *  "value01 LONG, "*
>> *  "value02 LONG, "*
>> *  "value03 LONG, "*
>> *  "value04 LONG, "*
>> *  "value05 LONG, "*
>> *  "value06 LONG, "*
>> *  "value07 LONG, "*
>> *  "value08 LONG, "*
>> *  "value09 LONG, "*
>> *  "value10 LONG, "*
>> *  "value11 LONG, "*
>> *  "value12 LONG, "*
>> *  "value13 LONG, "*
>> *  "value14 LONG, "*
>> *  "value15 LONG, "*
>> *  "value16 LONG, "*
>> *  "value17 LONG, "*
>> *  "value18 LONG, "*
>> *  "value19 LONG, "*
>> *  "value20 LONG, "   *
>> *  "value21 VARCHAR, "*
>> *  "value22 VARCHAR, "*
>> *  "value23 VARCHAR, "*
>> *  "value24 VARCHAR, "*
>> *  "value25 VARCHAR, "*
>> *  "value26 VARCHAR, "*
>> *  "value27 VARCHAR, "*
>> *  "value28 VARCHAR, "*
>> *  "value29 VARCHAR, "*
>> *  "value30 VARCHAR, "    *
>> *  "value31 VARCHAR, "*
>> *  "value32 VARCHAR, "*
>> *  "value33 VARCHAR, "*
>> *  "value34 VARCHAR, "*
>> *  "value35 VARCHAR, "*
>> *  "value36 VARCHAR, "*
>> *  "value37 VARCHAR, "*
>> *  "value38 VARCHAR, "*
>> *  "value39 VARCHAR) "*
>> *  "WITH
>> \"template=partitioned,atomicity=TRANSACTIONAL_SNAPSHOT,WRITE_SYNCHRONIZATION_MODE=FULL_ASYNC\"")),
>> SQL_NTS);*
>> *            CHECK_ERROR(retcode, "Fail to create table", hstmt,
>> SQL_HANDLE_STMT);*
>>
>> *    retcode = SQLExecDirect(hstmt,
>> reinterpret_cast<SQLCHAR*>(const_cast<char*>("CREATE INDEX key01t_idx ON
>> CDRTEST(key01) INLINE_SIZE 64")), SQL_NTS);*
>>
>> *            CHECK_ERROR(retcode, "Fail to create index", hstmt,
>> SQL_HANDLE_STMT); *
>>
>>
>> Below are configuration we used,
>>
>> *<?xml version="1.0" encoding="UTF-8"?>*
>>
>> *<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>*
>> *        http://www.springframework.org/schema/beans/spring-beans.xsd
>> <http://www.springframework.org/schema/beans/spring-beans.xsd>">*
>>
>> *    <bean id="ignite.cfg"
>> class="org.apache.ignite.configuration.IgniteConfiguration">*
>>
>> *        <property name="binaryConfiguration">*
>> *            <bean
>> class="org.apache.ignite.configuration.BinaryConfiguration">*
>> *                <property name="compactFooter" value="false"/>*
>>
>> *                <property name="idMapper">*
>> *                    <bean
>> class="org.apache.ignite.binary.BinaryBasicIdMapper">*
>> *                        <property name="lowerCase" value="true"/>*
>> *                    </bean>*
>> *                </property>*
>> *            </bean>*
>> *        </property>*
>>
>> *  <property name="clientConnectorConfiguration">*
>> *    <bean
>> class="org.apache.ignite.configuration.ClientConnectorConfiguration">*
>> *      <!--property name="host" value="127.0.0.1"/-->*
>> *      <!--property name="port" value="10800"/-->*
>> *      <!--property name="portRange" value="5"/-->*
>> *      <property name="maxOpenCursorsPerConnection" value="512"/>*
>> *      <property name="socketSendBufferSize" value="65536"/>*
>> *      <property name="socketReceiveBufferSize" value="131072"/>*
>> *      <!--property name="threadPoolSize" value="4"/-->*
>> *    </bean>*
>> *  </property>*
>>
>> *        <property name="dataStorageConfiguration">*
>> *           <bean
>> class="org.apache.ignite.configuration.DataStorageConfiguration">*
>> *              <!-- Enabling Apache Ignite Persistent Store. -->*
>> *              <property name="defaultDataRegionConfiguration">*
>> *                 <bean
>> class="org.apache.ignite.configuration.DataRegionConfiguration">*
>> *                     <property name="persistenceEnabled" value="false"/>*
>> *                 </bean>*
>> *              </property>*
>> *              <property name="walPath" value="/ignite-wal"/>*
>>
>> *              <property name="walArchivePath" value="/ignite-wal"/>*
>> *           </bean>*
>> *        </property>*
>>
>> *    </bean>*
>> *</beans>*
>>
>> Regards,
>> Yow
>>
>

Reply via email to