Index: wp-admin/admin.php
===================================================================
--- wp-admin/admin.php	(revision 18589)
+++ wp-admin/admin.php	(working copy)
@@ -202,6 +202,7 @@
 	require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
 
 	define('WP_IMPORTING', true);
+	wp_cache_suspend();
 
 	if ( apply_filters( 'force_filtered_html_on_import', false ) )
 		kses_init_filters();  // Always filter imported data with kses on multisite.
Index: wp-admin/includes/upgrade.php
===================================================================
--- wp-admin/includes/upgrade.php	(revision 18589)
+++ wp-admin/includes/upgrade.php	(working copy)
@@ -42,6 +42,7 @@
 
 	wp_check_mysql_version();
 	wp_cache_flush();
+	wp_cache_suspend();
 	make_db_current_silent();
 	populate_options();
 	populate_roles();
@@ -86,8 +87,6 @@
 
 	wp_new_blog_notification($blog_title, $guessurl, $user_id, ($email_password ? $user_password : __('The password you chose during the install.') ) );
 
-	wp_cache_flush();
-
 	return array('url' => $guessurl, 'user_id' => $user_id, 'password' => $user_password, 'password_message' => $message);
 }
 endif;
@@ -362,12 +361,12 @@
 
 	wp_check_mysql_version();
 	wp_cache_flush();
+	wp_cache_suspend();
 	pre_schema_upgrade();
 	make_db_current_silent();
 	upgrade_all();
 	if ( is_multisite() && is_main_site() )
 		upgrade_network();
-	wp_cache_flush();
 
 	if ( is_multisite() ) {
 		if ( $wpdb->get_row( "SELECT blog_id FROM {$wpdb->blog_versions} WHERE blog_id = '{$wpdb->blogid}'" ) )
Index: wp-includes/cache.php
===================================================================
--- wp-includes/cache.php	(revision 18589)
+++ wp-includes/cache.php	(working copy)
@@ -278,6 +278,15 @@
 	var $global_groups = array();
 
 	/**
+	 * If the cache is suspended for performance reasons
+	 *
+	 * @var bool
+	 * @access private
+	 * @since 3.3.0
+	 */
+	var $cache_suspended = false;
+
+	/**
 	 * Adds data to the cache if it doesn't already exist.
 	 *
 	 * @uses WP_Object_Cache::get Checks to see if the cache already has data.
@@ -293,6 +302,9 @@
 	 * @return bool False if cache ID and group already exists, true on success
 	 */
 	function add( $id, $data, $group = 'default', $expire = '' ) {
+		if ( $this->cache_suspended )
+			return true;
+
 		if ( empty ($group) )
 			$group = 'default';
 
@@ -509,6 +521,9 @@
 	 * @return bool Always returns true
 	 */
 	function set($id, $data, $group = 'default', $expire = '') {
+		if ( $this->cache_suspended )
+			return true;
+
 		if ( empty ($group) )
 			$group = 'default';
 
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 18589)
+++ wp-includes/functions.php	(working copy)
@@ -3700,6 +3700,34 @@
 }
 
 /**
+ * Suspend object caching.
+ *
+ * Stops wp_cache_add() from adding objects to the cache. Useful for imports when
+ * the huge amount of data being added to cache isn't useful. Call wp_cache_resume() later
+ * if you want suspension to only be temporary.
+ *
+ * @since 3.3.0
+*/
+function wp_cache_suspend() {
+	global $wp_object_cache;
+
+	if ( !empty( $wp_object_cache ) )
+		$wp_object_cache->cache_suspended = true;
+}
+
+/**
+ * Resume object caching.
+ *
+ * @since 3.3.0
+ */
+function wp_cache_resume() {
+	global $wp_object_cache;
+
+	if ( !empty( $wp_object_cache ) )
+		$wp_object_cache->cache_suspended = false;
+}
+
+/**
  * Suspend cache invalidation.
  *
  * Turns cache invalidation on and off.  Useful during imports where you don't wont to do invalidations
