Hi,
Yes, It's approximately 300MB.

Thanks
Charlin


On Mon, 25 Nov 2024 at 12:52, Pavel Tupitsyn <ptupit...@apache.org> wrote:

> > How big is one row on average, in bytes?
> > Approximately 300MB size
>
> 300 Megabytes, is that correct? This explains the measurements, I think.
>
> On Fri, Nov 22, 2024 at 4:27 PM Charlin S <charli...@hotelhub.com> wrote:
>
>> Hi
>> records count  => more than 160,0000
>> No of columns => 87 Columns (80 columns data null only)
>> How big is one row on average, in bytes? Approximately 300MB size
>>
>> New stats after removing 80 columns with same no of records
>> BenchmarkDotNet v0.14.0, Windows 10
>> (10.0.19044.2130/21H2/November2021Update)
>> Intel Core i5-8500 CPU 3.00GHz (Coffee Lake), 1 CPU, 6 logical and 6
>> physical cores
>> .NET SDK 8.0.101
>>   [Host]     : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>   DefaultJob : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>
>>
>> | Method       | Mean     | Error    | StdDev   | Gen0      | Gen1     |
>> Gen2     | Allocated |
>> |-------------
>> |---------:|---------:|---------:|----------:|---------:|---------:|----------:|
>> | Linq         | 188.6 ms | 15.08 ms | 43.26 ms | 1000.0000 |        - |
>>        - | 126.01 MB |
>> | LinqCompiled | 166.8 ms |  3.24 ms |  5.23 ms |  666.6667 | 666.6667 |
>> 333.3333 | 121.18 MB |
>>
>> Thanks
>> Charlin
>>
>> On Fri, 22 Nov 2024 at 00:07, Pavel Tupitsyn <ptupit...@apache.org>
>> wrote:
>>
>>> So how is the real data different from the test data?
>>> - How many rows are there?
>>> - How many columns?
>>> - How big is one row on average, in bytes?
>>>
>>> On Thu, Nov 21, 2024 at 7:08 PM Charlin S <charli...@hotelhub.com>
>>> wrote:
>>>
>>>> Hi,
>>>> The summary with real data :-
>>>> BenchmarkDotNet v0.14.0, Windows 10
>>>> (10.0.19044.2130/21H2/November2021Update)
>>>> Intel Core i5-8500 CPU 3.00GHz (Coffee Lake), 1 CPU, 6 logical and 6
>>>> physical cores
>>>> .NET SDK 8.0.101
>>>>   [Host]     : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>>>   DefaultJob : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>>>
>>>>
>>>> | Method       | Mean     | Error    | StdDev   | Median   | Gen0
>>>>  | Gen1      | Gen2      | Allocated |
>>>> |-------------
>>>> |---------:|---------:|---------:|---------:|----------:|----------:|----------:|----------:|
>>>> | Linq         | 530.0 ms | 17.28 ms | 48.46 ms | 512.4 ms | 7000.0000
>>>> | 3000.0000 | 1000.0000 | 999.57 MB |
>>>> | LinqCompiled | 543.3 ms | 21.48 ms | 59.53 ms | 525.3 ms | 6000.0000
>>>> | 2000.0000 | 1000.0000 | 994.65 MB |
>>>>
>>>> // * Hints *
>>>> Outliers
>>>>   Benchmarks.Linq: Default         -> 9 outliers were removed (722.82
>>>> ms..1.42 s)
>>>>   Benchmarks.LinqCompiled: Default -> 11 outliers were removed (767.85
>>>> ms..2.67 s)
>>>>
>>>> Thanks
>>>> Charlin
>>>>
>>>> On Thu, 21 Nov 2024 at 16:01, Pavel Tupitsyn <ptupit...@apache.org>
>>>> wrote:
>>>>
>>>>> Can you adjust this benchmark project to have the data and query more
>>>>> like your real project?
>>>>> Currently we have a similar number of rows and the query performs very
>>>>> well, let's understand what is different.
>>>>>
>>>>> On Thu, Nov 21, 2024 at 11:43 AM Charlin S <charli...@hotelhub.com>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>> Thank you for your email. I apologize for the late reply.
>>>>>> I ran the sample and summaries are:-
>>>>>>
>>>>>> BenchmarkDotNet v0.14.0, Windows 10
>>>>>> (10.0.19044.2130/21H2/November2021Update)
>>>>>> Intel Core i5-8500 CPU 3.00GHz (Coffee Lake), 1 CPU, 6 logical and 6
>>>>>> physical cores
>>>>>> .NET SDK 8.0.101
>>>>>>   [Host]     : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>>>>>   DefaultJob : .NET 8.0.1 (8.0.123.58001), X64 RyuJIT AVX2
>>>>>>
>>>>>>
>>>>>> | Method           | Mean        | Error    | StdDev   |
>>>>>> |--------------------|--------------:|----------:|---------------:|
>>>>>> | Linq                |   94.60 us | 1.515 us | 1.417 us |
>>>>>> | LinqCompiled |  16.50 us  | 0.328 us | 0.449 us |
>>>>>>
>>>>>> LINQCompiled much faster than LINQ in sample code but with real data
>>>>>> it's not much different.
>>>>>>
>>>>>>
>>>>>> Thanks
>>>>>> Charlin
>>>>>>
>>>>>> On Thu, 14 Nov 2024 at 20:30, Pavel Tupitsyn <ptupit...@apache.org>
>>>>>> wrote:
>>>>>>
>>>>>>> 1. Run the code in Release configuration
>>>>>>> 2. Try Compiled Query
>>>>>>> https://ignite.apache.org/docs/latest/net-specific/net-linq#compiled-queries
>>>>>>>
>>>>>>> My benchmark on 550_000 rows with 1 matching row shows 28
>>>>>>> microseconds for regular query and 6 microseconds for compiled query:
>>>>>>> https://gist.github.com/ptupitsyn/189c8164061bace8d975b2ec39045ca4
>>>>>>>
>>>>>>> 200 ms is a lot. Can you run my code and share the results?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Thu, Nov 14, 2024 at 1:46 PM Charlin S <charli...@hotelhub.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>> I was measuring performance after 5 times. Now I have run more than
>>>>>>>> 100 times and  var queryRes = query.ToList(); taken 202 milliseconds
>>>>>>>> as minimum.
>>>>>>>> Will be appreciated if I get a solution for getting the result in
>>>>>>>> 10 - 50 milliseconds.
>>>>>>>>
>>>>>>>> Regards,
>>>>>>>> Charlin
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Thu, 14 Nov 2024 at 15:35, Pavel Tupitsyn <ptupit...@apache.org>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> How do you measure? Do you perform a warm up before measurement?
>>>>>>>>> Try running the query 100 times before the measurement. Or,
>>>>>>>>> ideally, use BenchmarkDotNet to get accurate results.
>>>>>>>>>
>>>>>>>>> On Thu, Nov 14, 2024 at 11:51 AM Charlin S <charli...@hotelhub.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>> Thank you for your response.and sample.
>>>>>>>>>> My cache instance was created as TestIcache=_ignite.
>>>>>>>>>> GetOrCreateCache<string, TestModel>("TestModel"); so index was
>>>>>>>>>> not applied.
>>>>>>>>>> now I am creating cache instance like below and index applied
>>>>>>>>>>   var cacheCfgTestModel = new CacheConfiguration("TestModel", new
>>>>>>>>>> QueryEntity(typeof(TestModel)));
>>>>>>>>>>          TestIcache=_ignite.GetOrCreateCache<string, TestModel>(
>>>>>>>>>> cacheCfgTestModel);
>>>>>>>>>>
>>>>>>>>>> SQL:
>>>>>>>>>> select _T0._KEY, _T0._VAL from "TestModel".TESTMODEL as _T0 where
>>>>>>>>>> (_T0.COUNTRYCODE IS NOT DISTINCT FROM ?)
>>>>>>>>>>
>>>>>>>>>> EXPLANATION:
>>>>>>>>>> SELECT
>>>>>>>>>>     _T0__Z0._KEY AS __C0_0,
>>>>>>>>>>     _T0__Z0._VAL AS __C0_1
>>>>>>>>>> FROM "TestModel".TESTMODEL _T0__Z0
>>>>>>>>>>     /* "TestModel".TESTMODEL_COUNTRYCODE_ASC_IDX: COUNTRYCODE IS
>>>>>>>>>> ?1 */
>>>>>>>>>> WHERE _T0__Z0.COUNTRYCODE IS ?1
>>>>>>>>>> SELECT
>>>>>>>>>>     __C0_0 AS _KEY,
>>>>>>>>>>     __C0_1 AS _VAL
>>>>>>>>>> FROM PUBLIC.__T0
>>>>>>>>>>     /* "TestModel"."merge_scan" */
>>>>>>>>>>
>>>>>>>>>> Total records:27713 = > 27713
>>>>>>>>>> Time taken for Query:2 milliseconds ->  var query = TestIcache.
>>>>>>>>>> AsCacheQueryable().Where(x => x.Value.CountryCode == CountryCode);
>>>>>>>>>> Time taken for QueryResult:313 milliseconds -> var queryRes =
>>>>>>>>>> query.ToList();
>>>>>>>>>> Total Time taken:316 milliseconds
>>>>>>>>>> Why var queryRes = query.ToList(); taking 313 milliseconds even
>>>>>>>>>> if the result having only one record is taking nearly 300 
>>>>>>>>>> milliseconds.
>>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> Charlin
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Wed, 13 Nov 2024 at 22:36, Pavel Tupitsyn <
>>>>>>>>>> ptupit...@apache.org> wrote:
>>>>>>>>>>
>>>>>>>>>>> - This shows a full scan, the index is not being used.
>>>>>>>>>>> - There is no parametrization, I'm not sure why. Which Ignite
>>>>>>>>>>> version do you use?
>>>>>>>>>>>
>>>>>>>>>>> I've prepared a simple proof of concept [1] which shows that an
>>>>>>>>>>> index is used in this situation. Generated SQL is different:
>>>>>>>>>>>
>>>>>>>>>>> >> SQL:
>>>>>>>>>>> select _T0._KEY, _T0._VAL from "c".TESTMODEL as _T0 where
>>>>>>>>>>> (_T0.COUNTRYCODE IS NOT DISTINCT FROM ?)
>>>>>>>>>>>
>>>>>>>>>>> >> EXPLAIN:
>>>>>>>>>>> SELECT
>>>>>>>>>>>     _T0__Z0._KEY AS __C0_0,
>>>>>>>>>>>     _T0__Z0._VAL AS __C0_1
>>>>>>>>>>> FROM "c".TESTMODEL _T0__Z0
>>>>>>>>>>>     /* "c".TESTMODEL_COUNTRYCODE_ASC_IDX: COUNTRYCODE IS ?1 */
>>>>>>>>>>> WHERE _T0__Z0.COUNTRYCODE IS ?1
>>>>>>>>>>> SELECT
>>>>>>>>>>>     __C0_0 AS _KEY,
>>>>>>>>>>>     __C0_1 AS _VAL
>>>>>>>>>>> FROM PUBLIC.__T0
>>>>>>>>>>>     /* "c"."merge_scan" */
>>>>>>>>>>>
>>>>>>>>>>> [1]
>>>>>>>>>>> https://gist.github.com/ptupitsyn/882b9b9e5e13c82fcf96f83fd53b2777
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On Wed, Nov 13, 2024 at 6:41 PM Charlin S <
>>>>>>>>>>> charli...@hotelhub.com> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> 1. Use "==" instead of "string.Equals", looks like the provider
>>>>>>>>>>>> does not like string.Equals.
>>>>>>>>>>>>        changed to ==
>>>>>>>>>>>> 2. Share the generated SQL
>>>>>>>>>>>>
>>>>>>>>>>>>   SELECT Field1,Field2 FROM TestModel WHERE COUNTRYCODE='AU'
>>>>>>>>>>>> 3. Share the result of EXPLAIN for that SQL
>>>>>>>>>>>>    plan=SELECT
>>>>>>>>>>>>     __Z0.FIELD1 AS __C0_0,
>>>>>>>>>>>>     __Z0.FIELD2 AS __C0_1
>>>>>>>>>>>> FROM "TestModel".TESTMODEL __Z0
>>>>>>>>>>>>     /* "TestModel".TESTMODEL.__SCAN_ */
>>>>>>>>>>>>     /* scanCount: 1681786 */
>>>>>>>>>>>> WHERE (__Z0.COUNTRYCODE = 'AU')
>>>>>>>>>>>> 4. Is there an index on CountryCode?
>>>>>>>>>>>>     Yes,  [QuerySqlField(IsIndexed = true)]
>>>>>>>>>>>>         public string CountryCode { get; set; }
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Charlin
>>>>>>>>>>>>
>>>>>>>>>>>> On Wed, 13 Nov 2024 at 15:06, Pavel Tupitsyn <
>>>>>>>>>>>> ptupit...@apache.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> 1. Use "==" instead of "string.Equals", looks like the
>>>>>>>>>>>>> provider does not like string.Equals
>>>>>>>>>>>>> 2. Share the generated SQL
>>>>>>>>>>>>> 3. Share the result of EXPLAIN for that SQL
>>>>>>>>>>>>> 4. Is there an index on CountryCode?
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Wed, Nov 13, 2024 at 9:16 AM Charlin S <
>>>>>>>>>>>>> charli...@hotelhub.com> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> Thanks for your response.
>>>>>>>>>>>>>> I have tried different ways but the result is the same.
>>>>>>>>>>>>>> my cache records count is above 160,0000
>>>>>>>>>>>>>> var watchLINQQuery = System.Diagnostics.Stopwatch.StartNew();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>       var tmp=  TestIcache.AsEnumerable().Where(tc=> string.
>>>>>>>>>>>>>> Equals(tc.Value.CountryCode, CountryCode)).Select(tc => tc.
>>>>>>>>>>>>>> Value);
>>>>>>>>>>>>>>       watchLINQQuery.Stop(); //0 or 1 Milliseconds
>>>>>>>>>>>>>>       var watchIQueryableToArray = System.Diagnostics.
>>>>>>>>>>>>>> Stopwatch.StartNew();
>>>>>>>>>>>>>>       var result = tmp.ToArray(); // 12354 milliseconds
>>>>>>>>>>>>>> taken
>>>>>>>>>>>>>>       watchIQueryableToArray.Stop();
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> var result = tmp.ToArray(); taking similar time even if my
>>>>>>>>>>>>>> query result returns 1 or 2 records. Please suggest to me how to 
>>>>>>>>>>>>>> improve
>>>>>>>>>>>>>> this query performance.
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> Charlin
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, 5 Nov 2024 at 19:01, Pavel Tupitsyn <
>>>>>>>>>>>>>> ptupit...@apache.org> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1. Check the generated SQL
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> // Cast to ICacheQueryable
>>>>>>>>>>>>>>> var cacheQueryable = (ICacheQueryable) query;
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> // Get resulting fields query
>>>>>>>>>>>>>>> SqlFieldsQuery fieldsQuery = cacheQueryable.GetFieldsQuery();
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> // Examine generated SQL
>>>>>>>>>>>>>>> Console.WriteLine(fieldsQuery.Sql);
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2. Try EXPLAIN and other suggestions from
>>>>>>>>>>>>>>> https://ignite.apache.org/docs/latest/SQL/sql-tuning
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 3. Is there an index on CountryCode?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 4. Case-insensitive comparison might be inefficient. A
>>>>>>>>>>>>>>> better approach is to store lower/uppercase value in cache, and 
>>>>>>>>>>>>>>> then using
>>>>>>>>>>>>>>> lower/upper criteria for search
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Tue, Nov 5, 2024 at 1:08 PM Charlin S <
>>>>>>>>>>>>>>> charli...@hotelhub.com> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi  Pavel,
>>>>>>>>>>>>>>>> Thanks for your email. it reduces to 9 seconds after
>>>>>>>>>>>>>>>> removing AsParallel. Please let me know if there are any more 
>>>>>>>>>>>>>>>> options to
>>>>>>>>>>>>>>>> get good performance.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>> Charlin
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Tue, 5 Nov 2024 at 13:31, Pavel Tupitsyn <
>>>>>>>>>>>>>>>> ptupit...@apache.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi, "AsParallel" is the problem, it causes the entire data
>>>>>>>>>>>>>>>>> set to be loaded locally before filtering.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Remove it so that the LINQ expression can be translated
>>>>>>>>>>>>>>>>> into Ignite SQL and executed more efficiently.
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> https://ignite.apache.org/docs/latest/net-specific/net-linq
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Tue, Nov 5, 2024 at 8:58 AM Charlin S <
>>>>>>>>>>>>>>>>> charli...@hotelhub.com> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi All,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> I am trying Ignit.Net LINQ for the first time and seeing
>>>>>>>>>>>>>>>>>> very slowness with my linq query taking 13-15 seconds. Test 
>>>>>>>>>>>>>>>>>> model having
>>>>>>>>>>>>>>>>>> 550,000 records
>>>>>>>>>>>>>>>>>> my query as below
>>>>>>>>>>>>>>>>>> TestModel having index for CountryCode field.
>>>>>>>>>>>>>>>>>> ICache<string, TestModel> cache = ignite.GetCache<string,
>>>>>>>>>>>>>>>>>> TestModel>(CacheName);
>>>>>>>>>>>>>>>>>> IQueryable<ICacheEntry<string, TestModel>>  i
>>>>>>>>>>>>>>>>>> gniteQuerable  = cache.AsCacheQueryable();
>>>>>>>>>>>>>>>>>> igniteQuerable.AsParallel()
>>>>>>>>>>>>>>>>>>             .Where(x=>string.Equals(x.Value.CountryCode,
>>>>>>>>>>>>>>>>>> criteria.CountryCode, StringComparison.
>>>>>>>>>>>>>>>>>> CurrentCultureIgnoreCase))
>>>>>>>>>>>>>>>>>>             .Select(x => x.Key).ToList();
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>>>>> Charlin
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>

Reply via email to