<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 06:10:55 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[SERVER-68481] Test the performance of CE</title>
                <link>https://jira.mongodb.org/browse/SERVER-68481</link>
                <project id="10000" key="SERVER">Core Server</project>
                    <description>&lt;p&gt;Performance testing of cardinality estimation.&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Implement a performance testing framework -&#160; the common logic to be used by all CE performance tests.&lt;/li&gt;
	&lt;li&gt;Pre-generate histograms (either from data or directly) with varying number of buckets, and few different bucket boundary sizes.&lt;/li&gt;
	&lt;li&gt;Measure the estimation time for all SARGable predicates, and all dataflow nodes both against histograms, and via heuristic estimation.&lt;/li&gt;
	&lt;li&gt;Measure estimation time for complex AND/OR expressions - grow the expression size.&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;If possible, consider to use these tests to guard against performance refressions. As a minimum these tests should result in a performance report at the end of the project. The tests should be implemented either as C++ unit tests or Google perf tests.&lt;/p&gt;

&lt;p&gt;&#160;&lt;/p&gt;

&lt;p&gt;This task should be developed in sync with the following two efforts from the benchmark team: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-68029&quot; title=&quot;Add new metric to measure optimization time for Bonsai&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-68029&quot;&gt;SERVER-68029&lt;/a&gt;, &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-70646&quot; title=&quot;Compute and add query planning time to PlanSummaryStats&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-70646&quot;&gt;&lt;del&gt;SERVER-70646&lt;/del&gt;&lt;/a&gt;.&lt;/p&gt;</description>
                <environment></environment>
        <key id="2104296">SERVER-68481</key>
            <summary>Test the performance of CE</summary>
                <type id="3" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14718&amp;avatarType=issuetype">Task</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13201">Fixed</resolution>
                                        <assignee username="anton.korshunov@mongodb.com">Anton Korshunov</assignee>
                                    <reporter username="timour.katchaounov@mongodb.com">Timour Katchaounov</reporter>
                        <labels>
                            <label>M5</label>
                    </labels>
                <created>Tue, 2 Aug 2022 07:56:11 +0000</created>
                <updated>Sun, 29 Oct 2023 21:35:04 +0000</updated>
                            <resolved>Thu, 22 Dec 2022 16:04:34 +0000</resolved>
                                                    <fixVersion>6.3.0-rc0</fixVersion>
                                                        <votes>0</votes>
                                    <watches>6</watches>
                                                                                                                <comments>
                            <comment id="5072711" author="xgen-internal-githook" created="Thu, 22 Dec 2022 14:26:30 +0000"  >&lt;p&gt;Author:&lt;/p&gt;
{&apos;name&apos;: &apos;Anton Korshunov&apos;, &apos;email&apos;: &apos;anton.korshunov@mongodb.com&apos;, &apos;username&apos;: &apos;antkorsh&apos;}
&lt;p&gt;Message: &lt;a href=&quot;https://jira.mongodb.org/browse/SERVER-68481&quot; title=&quot;Test the performance of CE&quot; class=&quot;issue-link&quot; data-issue-key=&quot;SERVER-68481&quot;&gt;&lt;del&gt;SERVER-68481&lt;/del&gt;&lt;/a&gt; Test the performance of CE&lt;br/&gt;
Branch: master&lt;br/&gt;
&lt;a href=&quot;https://github.com/mongodb/mongo/commit/ad7518a025d666ddaab7c6ec832cc9080119e221&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://github.com/mongodb/mongo/commit/ad7518a025d666ddaab7c6ec832cc9080119e221&lt;/a&gt;&lt;/p&gt;</comment>
                            <comment id="4963135" author="JIRAUSER1258247" created="Tue, 8 Nov 2022 14:17:05 +0000"  >&lt;p&gt;&lt;a href=&quot;https://jira.mongodb.org/secure/ViewProfile.jspa?name=svilen.mihaylov%40mongodb.com&quot; class=&quot;user-hover&quot; rel=&quot;svilen.mihaylov@mongodb.com&quot;&gt;svilen.mihaylov@mongodb.com&lt;/a&gt; thanks for the suggestion. What I meant above is that given a set of tags (ints) without the nodes themselves, this is how we can map tags to ABT types. Of course, if such a mapping already exists, we should reuse that. Is there such a mapping from ABT tags to type names?&lt;/p&gt;</comment>
                            <comment id="4962676" author="JIRAUSER1258247" created="Tue, 8 Nov 2022 12:57:46 +0000"  >&lt;p&gt;Proposal for a low-level design.&lt;/p&gt;

&lt;p&gt;Measure the time to do the below operations for the same query:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Optimize a query.
	&lt;ul&gt;
		&lt;li&gt;Measure by wrapping OptPhaseManager::optimize, which is called from CETester::getCE.&lt;/li&gt;
		&lt;li&gt;Measure a number of times (e.g. 100).&lt;/li&gt;
		&lt;li&gt;Compute the avg, min, max times to optimize.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Total CE time.
	&lt;ul&gt;
		&lt;li&gt;Can be done by wrapping each implementation of CEInterface::deriveCE in a timer.&lt;/li&gt;
		&lt;li&gt;Call optimize many times.&lt;/li&gt;
		&lt;li&gt;Sum the time for all calls to deriveCE throughout one single call to optimize().&lt;/li&gt;
		&lt;li&gt;Compute the average, min, max times for deriveCE per one optimize() call.&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
	&lt;li&gt;Individual times to optimize each type of node (or each individual node, and type):
	&lt;ul&gt;
		&lt;li&gt;Done by wrapping each individual transport with a timer.&lt;/li&gt;
		&lt;li&gt;IMO it can also be done just by wrapping deriveCE(), but separating its exec time by the type of input node. This will be much simpler.&lt;/li&gt;
		&lt;li&gt;Nodes can be identified via: Polyvalue::hash(), or their Memo group id: node.getGroupId()&lt;/li&gt;
		&lt;li&gt;Node type can fetched via ABT::tagOf() - it is just a number. In the end it can be mapped via testing what type tag it matches - like: (node.tagOf() == node.tagOf&amp;lt;SargableNode&amp;gt;()). Need to check if there is a table that maps tags to node type names.&lt;/li&gt;
		&lt;li&gt;The measurements can be done in two ways:
		&lt;ul&gt;
			&lt;li&gt;Call optimize() many times for the same query, collect the time to estimate each node (type), and the number of times that node type was estimated.&lt;/li&gt;
			&lt;li&gt;Call optimize() once, but run each estimation transport() many times.&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The above means that there should be a different counter for each mesured type of functionality.&lt;br/&gt;
To avoid measuring the overhead of measurement itself, each of the above measurements should be done alone, without measuring any other type of functionality.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                <customfield id="customfield_10050" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname># Replies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>3.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18555" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname># of Sprints</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5.0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10011" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Backwards Compatibility</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10038"><![CDATA[Fully Compatible]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10055" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of 1st Reply</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 8 Nov 2022 13:30:16 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10052" key="com.atlassian.jira.toolkit:dayslastcommented">
                        <customfieldname>Days since reply</customfieldname>
                        <customfieldvalues>
                                        1 year, 6 weeks, 6 days ago
    
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_18254" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Dependencies</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[]]></customfieldvalue>


                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_17050" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Downstream Team Attention</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="16941"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10857" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>PM-2656</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10057" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comment by Customer</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10056" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last commenter</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>luke.bonanomi@mongodb.com</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_11151" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            1 year, 6 weeks, 6 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                    <customfield id="customfield_10051" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>anton.korshunov@mongodb.com</customfieldvalue>
            <customfieldvalue>xgen-internal-githook</customfieldvalue>
            <customfieldvalue>timour.katchaounov@mongodb.com</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_14254" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Product Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i14owv:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|i0nhv4:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_23361" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Requested By</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_22250" key="com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons">
                        <customfieldname>Special Downgrade Instructions Required</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="23343"><![CDATA[Not Needed]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10557" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue id="5913">QO 2022-10-03</customfieldvalue>
    <customfieldvalue id="5914">QE 2022-10-17</customfieldvalue>
    <customfieldvalue id="5921">QO 2022-11-28</customfieldvalue>
    <customfieldvalue id="5923">QO 2022-12-12</customfieldvalue>
    <customfieldvalue id="5925">QO 2022-12-26</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10053" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time In Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_22870" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Triagers</customfieldname>
                        <customfieldvalues>
                                

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14350" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>serverRank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1|i14b27:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>