MySQL Use

Author Message

Laurent Dorier

Wednesday 28 July 2010 7:48:47 am

Hello everyone,

I would like to know if eZPublish is using commit/rollback features (installation with mysql ormysqli).

It looks like many parts of code could use these features, but I don't find any autocommit in eZ code...

Thanks for a quick info about that. ;)

Bertrand Dunogier

Wednesday 28 July 2010 9:05:55 am

Yes, commit / rollback are used. We don't rollback that much, but transactions are started for most atomic operations. Most...

Bertrand Dunogier
eZ Systems Engineering, Lyon
http://twitter.com/bdunogier
http://gplus.to/BertrandDunogier

Gaetano Giunta

Wednesday 28 July 2010 12:23:27 pm

Autocommit is eanbled by default on mysql. For the oracle driver, we enable it when connecting

@bd: did you mean for most non-atomic operations? ;-)

Principal Consultant International Business
Member of the Community Project Board

Laurent Dorier

Wednesday 28 July 2010 2:21:36 pm

Thanks for the quick answer. :)

Like you wrote Gaetano, autocommit is set to On by default. For this reason I was thinking to find somewhere a "SET AUTOCOMMIT = 0" in eZ code...

Maybe Bertrand could you tell me shortly how it's working. I'm maybe just blind.

Bertrand Dunogier

Thursday 29 July 2010 1:29:14 am

How it's working ? Well, quite manually: transactions are explicitely started when needed ($db->begin()), and ended after the transaction unsafe queries have been executed, using $db->commit(). If an error occurs on any of those queries, the transaction is automatically rollbacked.

And what I mean with non-atomic operations is... well, what it means: operations which aren't meant to be part of a transaction because they're not critically dependent on each other ?

Bertrand Dunogier
eZ Systems Engineering, Lyon
http://twitter.com/bdunogier
http://gplus.to/BertrandDunogier

Laurent Dorier

Thursday 29 July 2010 6:24:28 am

Thanks Bertrand,

I've seen these code lines (and use them ;) ), but I'm searching how it's working exactly with the db handler.

I've checked in lib/ezdb/classes/ezmysqlidb.php, found the query( "COMMIT" ).... but nothing to allow this COMMIT with transactions (using the set autocommit=0; stuff ).

That's the thing disturbing me.

Sorry to bug you about, and apologize for my english.
Just want to learn. ;)

Cheers
Laurent

Bertrand Dunogier

Friday 30 July 2010 12:20:01 am

No problem whatsoever with your english, Laurent. Most of us here don't speak english as their native language anyway :)

Regarding the set autocommit part, it is a bit unrelated: we indeed don't disable autocommit, because, well, there is no need to. When a query isn't considered transaction unsafe (e.g. it can be executed independantly from the previous one), we just execute the query. Now if a set of queries are interdependant on each other, we do explicitely start a transaction ($db->begin()), and as the manual says (http://dev.mysql.com/doc/refman/5.0/en/commit.html), starting a transaction will disable autocommit.

We then just execute the "transaction unsafe" queries, and commit them using $db->commit(). If an error occurs in the transaction, the query is automatically rollbacked by the DB layer. Does it make sense ?

Bertrand Dunogier
eZ Systems Engineering, Lyon
http://twitter.com/bdunogier
http://gplus.to/BertrandDunogier

Laurent Dorier

Friday 30 July 2010 1:57:11 am

Thanks a lot Bertrand !!!

It's now really clear. I was missing the point "With START TRANSACTION, autocommit remains disabled"

Sure it makes sense. Well done guys. ;)

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.

eZ debug

Timing: Jan 18 2025 05:22:53
Script start
Timing: Jan 18 2025 05:22:53
Module start 'layout'
Timing: Jan 18 2025 05:22:53
Module start 'content'
Timing: Jan 18 2025 05:22:54
Module end 'content'
Timing: Jan 18 2025 05:22:54
Script end

Main resources:

Total runtime0.7422 sec
Peak memory usage4,096.0000 KB
Database Queries76

Timing points:

CheckpointStart (sec)Duration (sec)Memory at start (KB)Memory used (KB)
Script start 0.00000.0064 588.9219152.6094
Module start 'layout' 0.00640.0040 741.531339.3984
Module start 'content' 0.01040.7305 780.9297640.2109
Module end 'content' 0.74090.0013 1,421.140620.2031
Script end 0.7422  1,441.3438 

Time accumulators:

 Accumulator Duration (sec) Duration (%) Count Average (sec)
Ini load
Load cache0.00340.4524160.0002
Check MTime0.00130.1788160.0001
Mysql Total
Database connection0.00070.088710.0007
Mysqli_queries0.672490.5871760.0088
Looping result0.00080.1016740.0000
Template Total0.710595.720.3552
Template load0.00280.373620.0014
Template processing0.707795.349920.3539
Template load and register function0.00020.028610.0002
states
state_id_array0.00110.149110.0011
state_identifier_array0.00080.104720.0004
Override
Cache load0.00240.3258430.0001
Sytem overhead
Fetch class attribute can translate value0.00080.104330.0003
Fetch class attribute name0.00130.1706100.0001
XML
Image XML parsing0.00120.158030.0004
class_abstraction
Instantiating content class attribute0.00000.0067120.0000
General
dbfile0.00110.1435220.0000
String conversion0.00000.001240.0000
Note: percentages do not add up to 100% because some accumulators overlap

Templates used to render the page:

UsageRequested templateTemplateTemplate loadedEditOverride
1node/view/full.tplfull/forum_topic.tplextension/sevenx/design/simple/override/templates/full/forum_topic.tplEdit templateOverride template
8content/datatype/view/ezxmltext.tpl<No override>extension/community_design/design/suncana/templates/content/datatype/view/ezxmltext.tplEdit templateOverride template
13content/datatype/view/ezxmltags/paragraph.tpl<No override>extension/ezwebin/design/ezwebin/templates/content/datatype/view/ezxmltags/paragraph.tplEdit templateOverride template
4content/datatype/view/ezimage.tpl<No override>extension/sevenx/design/simple/templates/content/datatype/view/ezimage.tplEdit templateOverride template
1content/datatype/view/ezxmltags/emphasize.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/emphasize.tplEdit templateOverride template
2content/datatype/view/ezxmltags/line.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/line.tplEdit templateOverride template
2content/datatype/view/ezxmltags/link.tpl<No override>design/standard/templates/content/datatype/view/ezxmltags/link.tplEdit templateOverride template
1print_pagelayout.tpl<No override>extension/community/design/community/templates/print_pagelayout.tplEdit templateOverride template
 Number of times templates used: 32
 Number of unique templates used: 8

Time used to render debug report: 0.0001 secs