Forums / Developer / Performance using attribute_filter?

Performance using attribute_filter?

Author Message

Nicklas Lundgren

Tuesday 22 July 2008 3:10:01 am

Hi,
Whats your experience from using fetch with attribute_filter in very large sites?
In a site of ours, we have almost 150 000 contentobjects. Running the query below require about 30 seconds of pure MySQL work. It´s absolutely far too much.

We have also tried running it without the class_filter_array part of the code, but then it is even more slow.

From my perspective, the problem arises when the number of contentobjects climbs over about 50 000. Until then, we had ok performance.

Any ideas regarding how to handle this issue are very welcome!


fetch(content,list,hash(parent_node_id, $startpageNode.node_id,sort_by, $startpageNode.sort_array, class_filter_type,include, class_filter_array, array('article'),limit,1,attribute_filter,array('and', array('article/frontpageimage','=','0'))))}


Best regards,
/Nicklas

Nicklas Lundgren, Managing Director
Novitell AB, Sweden

André R.

Tuesday 22 July 2008 3:34:13 am

how many hits do you get with article/frontpageimage=0 ?
And why do you need to have so many articles in one folder?

If you split them up in logically separated folders, then you don't need to filter on such a big datasets (parent node id is filtered first).

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

Nicklas Lundgren

Tuesday 22 July 2008 5:44:39 am

Hi André,

Thanks for your reply.
I would say that about 80 000 object has frontpageimage=0, but we are only interested in the last published object, thats why we use limit, 1.

This is a news site. The content objects are already placed in the folders where they should be, we cant use a deeper hierarchy. And the number of content objects grows with about 6000 per day...
Also, we dont want to move older objects to some kind of archive folder, as they will then lose the url:s indexed in search engines.

The way MySQL handles the queries is really slowing down our results due to the huge amount of data in the database.

We are now trying to create our own operator for these kind of fetches, hopefully this will be faster.

Best regards,
/Nicklas

Nicklas Lundgren, Managing Director
Novitell AB, Sweden

André R.

Tuesday 22 July 2008 5:57:36 am

> We are now trying to create our own operator for these kind of fetches, hopefully this will be faster.

maybe, please post back if it helps or not.

eZ Online Editor 5: http://projects.ez.no/ezoe || eZJSCore (Ajax): http://projects.ez.no/ezjscore || eZ Publish EE http://ez.no/eZPublish/eZ-Publish-Enterprise-Subscription
@: http://twitter.com/andrerom

eZ debug

Timing: Jan 20 2025 10:58:03
Script start
Timing: Jan 20 2025 10:58:03
Module start 'content'
Timing: Jan 20 2025 10:58:03
Module end 'content'
Timing: Jan 20 2025 10:58:03
Script end

Main resources:

Total runtime0.2271 sec
Peak memory usage2,048.0000 KB
Database Queries141

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0072 588.9766180.8281
Module start 'content' 0.00720.0076 769.804798.0078
Module end 'content' 0.01470.2123 867.8125527.0469
Script end 0.2270  1,394.8594 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00391.7111200.0002
Check MTime0.00150.6415200.0001
Mysql Total
Database connection0.00100.438110.0010
Mysqli_queries0.167573.74471410.0012
Looping result0.00150.65271390.0000
Template Total0.211993.310.2119
Template load0.00110.469910.0011
Template processing0.210892.838910.2108
Override
Cache load0.00080.343010.0008
Sytem overhead
Fetch class attribute can translate value0.00100.443910.0010
XML
Image XML parsing0.00070.328510.0007
General
dbfile0.01145.0002200.0006
String conversion0.00000.002530.0000
Note: percentages do not add up to 100% because some accumulators overlap

CSS/JS files loaded with "ezjscPacker" during request:

CacheTypePacklevelSourceFiles
CSS0extension/community/design/community/stylesheets/ext/jquery.autocomplete.css
extension/community_design/design/suncana/stylesheets/scrollbars.css
extension/community_design/design/suncana/stylesheets/tabs.css
extension/community_design/design/suncana/stylesheets/roadmap.css
extension/community_design/design/suncana/stylesheets/content.css
extension/community_design/design/suncana/stylesheets/star-rating.css
extension/community_design/design/suncana/stylesheets/syntax_and_custom_tags.css
extension/community_design/design/suncana/stylesheets/buttons.css
extension/community_design/design/suncana/stylesheets/tweetbox.css
extension/community_design/design/suncana/stylesheets/jquery.fancybox-1.3.4.css
extension/bcsmoothgallery/design/standard/stylesheets/magnific-popup.css
extension/sevenx/design/simple/stylesheets/star_rating.css
extension/sevenx/design/simple/stylesheets/libs/fontawesome/css/all.min.css
extension/sevenx/design/simple/stylesheets/main.v02.css
extension/sevenx/design/simple/stylesheets/main.v02.res.css
JS0extension/ezjscore/design/standard/lib/yui/3.17.2/build/yui/yui-min.js
extension/ezjscore/design/standard/javascript/jquery-3.7.0.min.js
extension/community_design/design/suncana/javascript/jquery.ui.core.min.js
extension/community_design/design/suncana/javascript/jquery.ui.widget.min.js
extension/community_design/design/suncana/javascript/jquery.easing.1.3.js
extension/community_design/design/suncana/javascript/jquery.ui.tabs.js
extension/community_design/design/suncana/javascript/jquery.hoverIntent.min.js
extension/community_design/design/suncana/javascript/jquery.popmenu.js
extension/community_design/design/suncana/javascript/jScrollPane.js
extension/community_design/design/suncana/javascript/jquery.mousewheel.js
extension/community_design/design/suncana/javascript/jquery.cycle.all.js
extension/sevenx/design/simple/javascript/jquery.scrollTo.js
extension/community_design/design/suncana/javascript/jquery.cookie.js
extension/community_design/design/suncana/javascript/ezstarrating_jquery.js
extension/community_design/design/suncana/javascript/jquery.initboxes.js
extension/community_design/design/suncana/javascript/app.js
extension/community_design/design/suncana/javascript/twitterwidget.js
extension/community_design/design/suncana/javascript/community.js
extension/community_design/design/suncana/javascript/roadmap.js
extension/community_design/design/suncana/javascript/ez.js
extension/community_design/design/suncana/javascript/ezshareevents.js
extension/sevenx/design/simple/javascript/main.js

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1pagelayout.tpl<No override>extension/sevenx/design/simple/templates/pagelayout.tplEdit templateOverride template
 Number of times templates used: 1
 Number of unique templates used: 1

Time used to render debug report: 0.0001 secs