Index: t3lib/class.t3lib_db.php
===================================================================
--- t3lib/class.t3lib_db.php	(revision 2859)
+++ t3lib/class.t3lib_db.php	(working copy)
@@ -888,10 +888,24 @@
 			// if the connection fails we need a different method to get the error message
 		ini_set('track_errors', 1);
 		ini_set('html_errors', 0);
+		$isLocalhost = ($TYPO3_db_host == 'localhost' || $TYPO3_db_host == '127.0.0.1');
 		if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['no_pconnect'])	{
-			$this->link = @mysql_connect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password);
+			if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['dbCompress'] && !$isLocalhost) {
+				// We use PHP's default value for 4th parameter (new_link), which is false.
+				// See PHP sources, for example: file php-5.2.5/ext/mysql/php_mysql.c, function php_mysql_do_connect(), near line 525
+				$this->link = @mysql_connect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password, false, MYSQL_CLIENT_COMPRESS);
+			}
+			else {
+				$this->link = @mysql_connect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password);
+			}
 		} else {
-			$this->link = @mysql_pconnect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password);
+			if ($GLOBALS['TYPO3_CONF_VARS']['SYS']['dbCompress'] && !$isLocalhost) {
+				// See comment about 4th parameter in block above
+				$this->link = @mysql_pconnect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password, false, MYSQL_CLIENT_COMPRESS);
+			}
+			else {
+				$this->link = @mysql_pconnect($TYPO3_db_host, $TYPO3_db_username, $TYPO3_db_password);
+			}
 		}
 		$error_msg = $php_errormsg;
 		ini_restore('track_errors');
@@ -1106,7 +1120,7 @@
 
 	/**
 	 * Checks if recordset is valid and writes debugging inormation into devLog if not.
-	 * 
+	 *
 	 * @param	resource	$res	Recordset
 	 * @return	boolean	<code>false</code> if recordset is not valid
 	 */
Index: t3lib/config_default.php
===================================================================
--- t3lib/config_default.php	(revision 2859)
+++ t3lib/config_default.php	(working copy)
@@ -80,6 +80,7 @@
 		'no_pconnect' => 0,						// Boolean: If true, "connect" is used instead of "pconnect" when connecting to the database!
 		'multiplyDBfieldSize' => 1,				// Double: 1-5: Amount used to multiply the DB field size when the install tool is evaluating the database size (eg. "2.5"). This is only useful e.g. if your database is iso-8859-1 encoded but you want to use utf-8 for your site. For Western European sites using utf-8 the need should not be for more than twice the normal single-byte size (2) and for Chinese / Asian languages 3 should suffice. NOTICE: It is recommended to change the native database charset instead! (see http://wiki.typo3.org/index.php/UTF-8_support for more information)
 		'setDBinit' => '',						// String (textarea): Commands to send to database right after connecting, separated by newline. Ignored by the DBAL extension except for the 'native' type!
+		'dbCompress' => 0,						// Boolean: if true, data exchange between TYPO3 and database server will be compressed. This may improve performance if (1) database serever is on the different server and (2) network connection speed to database server is 100mbps or less. CPU usage will be higher if this option is used but database operations will be executed faster due to much less (up to 3 times) database network traffic. This option has no effect if MySQL server is localhost.
 		'setMemoryLimit' => 0,					// Integer, memory_limit in MB: If more than 16, TYPO3 will try to use ini_set() to set the memory limit of PHP to the value. This works only if the function ini_set() is not disabled by your sysadmin.
 		'forceReturnPath' => 0,					// Boolean: Force return path to be applied in mail() calls. If this is set, all calls to mail() done by t3lib_htmlmail will be called with '-f<return_path> as the 5th parameter. This will make the return path correct on almost all Unix systems. There is a known problem with Postfix below version 2: Mails are not sent if this option is set and Postfix is used. On Windows platforms, the return path is set via a call to ini_set. This has no effect if safe_mode in PHP is on.
 		'displayErrors' => -1,					// Integer, -1,0,1,2. 0=Do not display any PHP error messages. 1=Display error messages. 2=Display only if client matches TYPO3_CONF_VARS[SYS][devIPmask]. -1=Default setting. With this option, you can override the PHP setting "display_errors". It is suggested that you set this to "0" and enable the "error_log" option in php.ini instead.
