Truncate SHA-1 indexes
authorTim Starling <tstarling@wikimedia.org>
Wed, 26 Sep 2012 04:05:38 +0000 (14:05 +1000)
committerTim Starling <tstarling@wikimedia.org>
Wed, 26 Sep 2012 04:09:38 +0000 (14:09 +1000)
Per Asher Feldman's suggestion on wikitech-l, truncate DB indexes which
hold SHA-1 values, so that the space usage is reduced at the expense of
a very small overhead when selecting values that have colliding
truncated hashes.

Change-Id: I059de4f7bba9a949cf0a93a57df32226c41d8ce0

maintenance/archives/patch-img_sha1.sql
maintenance/tables.sql

index 35950f5..0a375c4 100644 (file)
@@ -1,8 +1,8 @@
 -- Add img_sha1, oi_sha1 and related indexes
 ALTER TABLE /*$wgDBprefix*/image
   ADD COLUMN img_sha1 varbinary(32) NOT NULL default '',
-  ADD INDEX img_sha1 (img_sha1);
+  ADD INDEX img_sha1 (img_sha1(10));
 
 ALTER TABLE /*$wgDBprefix*/oldimage
   ADD COLUMN oi_sha1 varbinary(32) NOT NULL default '',
-  ADD INDEX oi_sha1 (oi_sha1);
+  ADD INDEX oi_sha1 (oi_sha1(10));
index 062052f..8635604 100644 (file)
@@ -846,7 +846,7 @@ CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
 -- Used by Special:Newimages and Special:ListFiles
 CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
 -- Used in API and duplicate search
-CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1(10));
 
 
 --
@@ -884,7 +884,7 @@ CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timest
 CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
 -- oi_archive_name truncated to 14 to avoid key length overflow
 CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
-CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
+CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1(10));
 
 
 --