<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webdesign Informatik &#187; MySQL</title>
	<atom:link href="http://www.webdesign-informatik.de/tag/mysql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.webdesign-informatik.de</link>
	<description>Internet : SEO : Programmierung : Datenbank : Linux</description>
	<lastBuildDate>Sat, 19 Nov 2011 11:11:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP/MySQL Benchmark Scripts</title>
		<link>http://www.webdesign-informatik.de/php/php-mysql-benchmark-scripts/</link>
		<comments>http://www.webdesign-informatik.de/php/php-mysql-benchmark-scripts/#comments</comments>
		<pubDate>Sun, 24 Oct 2010 11:58:10 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[speed test]]></category>

		<guid isPermaLink="false">http://www.webdesign-informatik.de/?p=391</guid>
		<description><![CDATA[Da meine Wordpress-Installation mit dem Standard-Template bei dem Webhoster Strato ziemlich langsam war und ich Ladezeiten von 5-6 Sekunen pro Seitenaufruf hatte, musste ich mich auf die Suche nach der Quelle des Performance-Engpasses machen.
Langw Ladezeiten können verschiedene Ursachen haben:

Webserver ist überlastet und liefert Daten zu langsam aus
Webserver ist überlastet und verarbeitet Daten zu langsam
Datenbankserver ist überlastet [...]]]></description>
			<content:encoded><![CDATA[<p>Da meine Wordpress-Installation mit dem Standard-Template bei dem Webhoster Strato ziemlich langsam war und ich Ladezeiten von 5-6 Sekunen pro Seitenaufruf hatte, musste ich mich auf die Suche nach der Quelle des Performance-Engpasses machen.</p>
<p>Langw Ladezeiten können verschiedene Ursachen haben:</p>
<ol>
<li>Webserver ist überlastet und liefert Daten zu langsam aus</li>
<li>Webserver ist überlastet und verarbeitet Daten zu langsam</li>
<li>Datenbankserver ist überlastet und verarbeitet Daten zu langsam</li>
</ol>
<p>Punkt 1 kann man einfach durch einen Dateidownload testen, ist dieser wesentlich kleiner als die möglich Bandbreite der eigenen DSL-Leitung, ist der Server wohl allgemein überlastet. Weiters kann nach Punkt 2 im Falle eine Scriptsprache, das entsprechende Modul ausgelastet sein. Bei Wordpress wäre das die PHP-Verarbeitung auf dem Webserver. Bei einem Hosting bei Strato gibt es einen separaten Server für die Datenbank MySQL, diese kann nach Punkt 3 auch überlastet sein. Wo der Hund vergraben liegt, kann nun genauer getestet werden.<br />
<span id="more-391"></span></p>
<h2>MySQL Benchmark Script</h2>
<p>Hier habe ich bei einer Suche nach  &#8221;mysql speed test&#8221; oder &#8220;mysql benchmark script&#8221; nicht viel brauchbares gefunden, was sich direkt von PHP aus starten lässt. Also habe ich was kleines selbstgebastelt, was auf einer <a href="http://dev.mysql.com/doc/refman/5.0/en/information-functions.html">MySQL-Benchmark-Funktion</a> beruht. Meine Ergebnisse:</p>
<ul>
<li>5,8 s lokal mit XAMPP</li>
<li>1,0 s Dedicated Webserver</li>
<li>0,2 s Strato BasicWeb XL Webspace</li>
</ul>
<p>Wie hier klar zu sehen ist, ist der MySQL Server in XAMPP standardmäßig wohl sehr schlecht konfiguriert. Der MySQL-Server rdbms.strato.de von Strato liefert sehr gute Ergebnisse, was zeigt, dass die langen Ladezeiten bei Strato nicht mit dem Datenbankserver zusammenhängen.</p>
<p><strong>PHP Code für MySQL Benchmark Script</strong></p>
<p>Vorher die MySQL Table nach dem Code in den Kommentaren anlegen und <strong> </strong>die MySQL Verbindungsdaten in das Script eintragen, als PHP File dann vom Webserver starten.</p>
<p><code><br />
/*<br />
PHP Script to benchmark a MySQL-Server<br />
(c) www.webdesign-informatik.deSQL Code for Testtable:CREATE TABLE IF NOT EXISTS `mytable` (<br />
`mycol` int(11) NOT NULL<br />
) ENGINE=MyISAM DEFAULT CHARSET=latin1;</p>
<p>INSERT INTO `mytable` (`mycol`) VALUES (23);</p>
<p>*/<br />
$db_server = 'localhost';<br />
$db_user = 'root';<br />
$db_pw = '';<br />
$db_name = 'test';$timeStart = microtime_float();<br />
$link = mysql_connect($db_server, $db_user, $db_pw);<br />
mysql_select_db($db_name, $link);</p>
<p>$query = "SELECT BENCHMARK(1000000,ENCODE('hello','goodbye'));";<br />
$result = mysql_query($query, $link);<br />
$query = 'BENCHMARK(10000, (SELECT * FROM mytable)';<br />
$result = mysql_query($query, $link);</p>
<p>$timeEnd = microtime_float();<br />
echo "Time: ".($timeEnd - $timeStart)." s";<br />
mysql_close($link);</p>
<p>function microtime_float() {<br />
list($usec, $sec) = explode(" ", microtime());<br />
return ((float)$usec + (float)$sec);<br />
}</p>
<p></code></p>
<h2>PHP Benchmarking Script</h2>
<p>Um die Ladezeiten von PHP aus einem Host zu messen, habe ich ein <a href="http://www.free-webhosts.com/php-benchmark-script.php">PHP Benchmark Script</a> gefunden, was gute Dienste erwies. Es führt einige Mathematik- und Stringberechnungen druch. Hier meine Ergebnisse als grobe Vergleichsgrundlage, entscheidend für die Performance ist natürlich die eigene Hardware und Konfiguratio.</p>
<ul>
<li>70 ms lokal mit XAMPP</li>
<li>80 ms Dedicated Webserver</li>
<li>515 ms Strato BasicWeb XL Webspace</li>
<li> 31 ms Strato BasicWeb XL nach internem Webspace Umzug</li>
</ul>
<p>Ja, richtig gelesen, nach dem Betätigen der unscheinbaren Funktion &#8220;Webspace auf schnelleren Server umziehen&#8221;, die mir nur durch Zufall im Loginbereich aufgefallen ist,  habe ich einen Super Speed bei Strato, wahrscheinlich weil ich mir die Ressourcen noch nicht mit Millionen anderen Usern teilen muss. Mal schauen wie lange das so bleibt. So ist es jedenfall akzeptabel! Wordpress-Seitenaufruf in ~2 Sekunden, was nur noch an der langsamen Wordpress-Programmierung liegt.</p>
<div id="attachment_392" class="wp-caption alignnone" style="width: 417px"><img class="size-full wp-image-392" title="PHP Benchmark Script ergebnis" src="http://www.webdesign-informatik.de/wp-content/uploads/2010/10/PHP-Benchmark-Script-ergebnis.gif" alt="PHP Benchmark Script ergebnis" width="407" height="313" /><p class="wp-caption-text">Ergebis des PHP Benchmarking Scripts auf dem lokalen Rechner</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.webdesign-informatik.de/php/php-mysql-benchmark-scripts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mit mysqldump Zeilen in separaten INSERT-Befehlen exportieren</title>
		<link>http://www.webdesign-informatik.de/linux/mit-mysqldump-zeilen-in-separaten-insert-befehlen-exportieren/</link>
		<comments>http://www.webdesign-informatik.de/linux/mit-mysqldump-zeilen-in-separaten-insert-befehlen-exportieren/#comments</comments>
		<pubDate>Wed, 25 Mar 2009 14:07:19 +0000</pubDate>
		<dc:creator>Elias</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[mysqldump]]></category>

		<guid isPermaLink="false">http://webdesign.e-lias.de/wordpress/?p=11</guid>
		<description><![CDATA[Wer die bekannte Datenbank MySQL verwendet und die Daten sichern oder umziehen will, macht dies am besten mit dem mysqldump Befehl, welcher einem unter Linux zur Verfügung steht. Ich hatte neulich das Problem, dass ich die exportierten Daten kontrollieren musste und mir dies aus Gründen der Übersichtlcihkeit ziemlich schwer fiel. Standardmäßig exportiert mysqldump die Daten [...]]]></description>
			<content:encoded><![CDATA[<p>Wer die bekannte Datenbank MySQL verwendet und die Daten sichern oder umziehen will, macht dies am besten mit dem <strong>mysqldump</strong> Befehl, welcher einem unter Linux zur Verfügung steht. Ich hatte neulich das Problem, dass ich die exportierten Daten kontrollieren musste und mir dies aus Gründen der Übersichtlcihkeit ziemlich schwer fiel. Standardmäßig exportiert <strong>mysqldump</strong> die Daten in Form von erweiterten <strong>INSERT-Befehlen</strong>, bei denen alle Werte in eine Zeile gepackt werden, um die Datenmenge klein zu halten. Für ein übersichtliches Vergleichen &#8211; Suchen und Finden bestimmter Zeilen, hätte ich jedoch gern einen separaten INSERT-Befehl je Datenzeile.<span id="more-11"></span></p>
<p><strong>mysqldump Syntax in der Linux-Shell</strong></p>
<div class="dean_ch" style="white-space: wrap;">mysqldump -u DBUSERNAME -p DBNAME [DBTABLENAME] &gt; BACKUPFILENAME</div>
<p><strong>mysqldump Resultat mit extended inserts</strong></p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> tablename <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="st0">&#8216;data_row1_col1&#8242;</span>, <span class="st0">&#8216;data_row1_col2&#8242;</span><span class="br0">&#41;</span>, <span class="br0">&#40;</span><span class="st0">&#8216;data_row2_col1&#8242;</span>, <span class="st0">&#8216;data_row2_col2&#8242;</span><span class="br0">&#41;</span>;</div>
<p>Die Lösung für die separaten INSERTs ist der Paramter <strong>&#8211;skip-extended-insert</strong>, welcher zwar in den Manpages von mysqldump steht, allerdings dort nur sehr schwer zu finden ist.</p>
<p><strong>mysqldump mit skip-extended-insert</strong></p>
<div class="dean_ch" style="white-space: wrap;">mysqldump &#8211;skip-extended-insert -u DBUSERNAME -p DBNAME [DBTABLENAME] &gt; BACKUPFILENAME</div>
<p><strong>mysqldump Resultat ohne extended inserts</strong></p>
<div class="dean_ch" style="white-space: wrap;"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> tablename <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="st0">&#8216;data_row1_col1&#8242;</span>, <span class="st0">&#8216;data_row1_col2&#8242;</span><span class="br0">&#41;</span>;<br />
<span class="kw1">INSERT</span> <span class="kw1">INTO</span> tablename <span class="kw1">VALUES</span> <span class="br0">&#40;</span><span class="st0">&#8216;data_row2_col1&#8242;</span>, <span class="st0">&#8216;data_row2_col2&#8242;</span><span class="br0">&#41;</span>;</div>
<p>Mehr zum <a href="http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html">mysqldump-Befehl</a> findet man auf der mysql.com Homepage.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.webdesign-informatik.de/linux/mit-mysqldump-zeilen-in-separaten-insert-befehlen-exportieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

