Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 16. Mai 2016 12:32

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.918
Webseite

[GELÖST] AUTOCOMMIT in AdoLite deaktivieren?

Ich bin im Moment CMSMS am installieren auf einem virtuellen System mit getrennten Web und Mysql Server. Die Share's sind mit NFS eingebunden, was das System auf File-Ebene für häufige Schreibzugriffe anfällig macht.

CMSMS ist so konfiguriert, dass bei jedem SQL-Statement ein AUTOCOMMIT gemacht wird. Dadurch ergibt sich nach jedem einzelnen UPDATE ein Commit plus ein Flush auf die Disk. Das Resultat ist, dass es bis zu 10 - 15 Sekunden dauert, bis eine Seite gespeichert ist.

Ich habe nun versucht in der mysqli_transaction_module_inc.php das var $autoCommit = true; auf false zu setzen. Danach ging das speichern immer noch 10 Sekunden lang, wurde jedoch nicht mehr bestätigt, resp. ergab es keine Weiterleitung auf die listcontent.php mehr. Hat einer von euch eine Ahnung ob es überhaupt möglich ist, AdoLite hier umzukonfigurieren?


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#2 16. Mai 2016 15:00

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] AUTOCOMMIT in AdoLite deaktivieren?

nockenfell schrieb:

CMSMS ist so konfiguriert, dass bei jedem SQL-Statement ein AUTOCOMMIT gemacht wird.

Meinst du jetzt per default? Oder hast DU das in dem speziellen Fall so gemacht?

nockenfell schrieb:

Ich habe nun versucht in der mysqli_transaction_module_inc.php das var $autoCommit = true; auf false zu setzen.

ops ?

CMSMS verwendet keine Transaktionen - das ist auch der Grund, weshalb ich aus Performance-Gründen empfehle, in der adodb.functions.php, Zeile 51

  $str = 'pear:date:extend:transaction';

durch

zu ersetzen. Ist wohl auch der Grund, weshalb es da in der config.php keinen Parameter gibt, um dort etwas zu ändern.

Oder hab ich da jetzt etwas falsch verstanden?

Falls du die Transactionen brauchst, sollte es funktionieren, wenn du hinter Zeile 52

  $dbinstance = ADONewConnection($config['dbms'], $str);

dies

  $dbinstance ->autoCommit = false;

einfügst.

Alternativ könntest du noch den Datenstrom zur Datenbank komprimieren

http://www.cmsmadesimple.de/dokumentati … ieren.html

Beitrag geändert von Andynium (16. Mai 2016 15:04)

Offline

#3 16. Mai 2016 17:13

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.918
Webseite

Re: [GELÖST] AUTOCOMMIT in AdoLite deaktivieren?

Danke für die Rückmeldung!

Im Log von Mysql war das Autocommit zu sehen. Da in der mysqli_transaction_module_inc.php dies auf true gesetzt war, habe ich mal angenommen, dass dies hier der Grund dazu sei.

Habe mittlerweile auch auf der Mysql Seite weitergesucht und mit folgender Anpassung ein gutes Resultat erzielt:

sync_binlog=256
https://dev.mysql.com/doc/refman/5.5/en … ync_binlog

innodb_flush_log_at_trx_commit=2
https://dev.mysql.com/doc/refman/5.5/en … trx_commit

Damit Problem gelöst.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline

#4 16. Mai 2016 18:51

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: [GELÖST] AUTOCOMMIT in AdoLite deaktivieren?

Du hast also direkt an MySQL rumgeschraubt wink.

Offline

#5 16. Mai 2016 19:14

nockenfell
Moderator
Ort: Lenzburg, Schweiz
Registriert: 09. November 2010
Beiträge: 2.918
Webseite

Re: [GELÖST] AUTOCOMMIT in AdoLite deaktivieren?

Genau.


[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline