This is a test server with nothing else hitting the box. I imported a
dump of a production database and is trying to find a way to reduce the
time it takes to rebuild the index on the mentioned table
Hard Drive spec:
Clarion EMC Hard drive 100 GB internal 3.5" Fibre Channel 10000 rpm buffer
CREATE TABLE `parts` (
`prtStore` smallint(5) unsigned NOT NULL default '0',
`prtMMfg` char(3) NOT NULL default '',
`prtMfg` char(3) NOT NULL default '',
`prtPN` char(28) NOT NULL default '',
`prtStripped` char(28) NOT NULL default '',
`prtSort` char(75) NOT NULL default '',
`prtPNID` char(36) NOT NULL default '',
`prtSKU` char(14) NOT NULL default '',
`prtPic` char(20) NOT NULL default '',
`prtDesc` char(40) NOT NULL default '',
`prtDesc2` char(40) NOT NULL default '',
`prtStkQty` int(10) NOT NULL default '0',
`prtRsvQty` int(9) unsigned NOT NULL default '0',
`prtSupFlag` enum('N','Y') NOT NULL default 'N',
`prtAltMfg` char(3) NOT NULL default '',
`prtAltPN` char(28) NOT NULL default '',
`prtVD` tinyint(1) unsigned NOT NULL default '2',
`prtVQ` tinyint(1) unsigned NOT NULL default '0',
`prtMClass` char(1) NOT NULL default '',
`prtSClass1` char(1) NOT NULL default 'N',
`prtSClass2` char(1) NOT NULL default '',
`prtUClass` char(1) NOT NULL default '',
`prtProd` char(3) NOT NULL default '',
`prtGroup` char(10) NOT NULL default '',
`prtRptGroup` char(8) NOT NULL default '',
`prtPNcode` char(3) NOT NULL default '',
`prtDept` char(3) NOT NULL default '',
`prtCat` char(3) NOT NULL default '',
`prtOrderType` char(10) NOT NULL default '',
`prtDNR` enum('N','Y') NOT NULL default 'N',
`prtStockingCode` char(1) NOT NULL default '',
`prtExclude` char(3) NOT NULL default '',
`prtTax` enum('S','T','E') NOT NULL default 'S',
`prtNet` enum('N','Y') NOT NULL default 'N',
`prtMinSell` int(8) unsigned NOT NULL default '0',
`prtPerCar` smallint(5) unsigned NOT NULL default '0',
`prtMinStock` int(9) unsigned NOT NULL default '0',
`prtMaxStock` int(9) unsigned NOT NULL default '0',
`prtOrdPnt` int(9) unsigned NOT NULL default '0',
`prtLeadTime` tinyint(2) unsigned NOT NULL default '0',
`prtSMeasure` char(2) NOT NULL default 'EA',
`prtPMeasure` char(2) NOT NULL default 'EA',
`prtBMeasure` char(2) NOT NULL default 'EA',
`prtPackQty` int(7) unsigned NOT NULL default '0',
`prtPurchQty` smallint(3) unsigned NOT NULL default '1',
`prtMinBuyQty` smallint(3) unsigned NOT NULL default '1',
`prtMaxBuyQty` int(10) unsigned NOT NULL default '0',
`prtWeight` int(9) unsigned NOT NULL default '0',
`prtFreight` int(9) unsigned NOT NULL default '0',
`prtFrghtPPD` enum('Y','N') NOT NULL default 'Y',
`prtOnOrder` int(9) unsigned NOT NULL default '0',
`prtInBound` int(9) unsigned NOT NULL default '0',
`prtWHloc` smallint(5) unsigned NOT NULL default '0',
`prtWHzone` char(3) NOT NULL default '',
`prtVBO` int(9) unsigned NOT NULL default '0',
`prtCBO` int(9) unsigned NOT NULL default '0',
`prtPriVC` char(3) NOT NULL default '',
`prtPriVType` enum('M','S') NOT NULL default 'M',
`prtSecVC` char(3) NOT NULL default '',
`prtSecVType` enum('M','S') NOT NULL default 'M',
`prtStocked` enum('Y','N') NOT NULL default 'Y',
`prtReal` enum('Y','N') NOT NULL default 'Y',
`prtActive` enum('Y','N') NOT NULL default 'Y',
`prtCpnStk` enum('N','Y') NOT NULL default 'N',
`prtCpnVerify` enum('Y','N') NOT NULL default 'Y',
`prtCpnPNID` char(36) NOT NULL default '',
`prtLastSold` date default NULL,
`prtLastReturn` date default NULL,
`prtLastReceived` date default NULL,
`prtLastInventory` datetime default NULL,
`prtCreated` date default NULL,
`prtRetCore` int(10) unsigned NOT NULL default '0',
`prtTotRetCore` int(10) unsigned NOT NULL default '0',
`prtRetDef` int(10) unsigned NOT NULL default '0',
`prtTotRetDef` int(10) unsigned NOT NULL default '0',
`prtRetNew` int(10) unsigned NOT NULL default '0',
`prtTurns` int(9) unsigned NOT NULL default '0',
`prtFixedFee` int(9) unsigned NOT NULL default '0',
`prtFFFlag` enum('N','Y') NOT NULL default 'N',
`prtVOC` int(10) unsigned NOT NULL default '0',
`prtAreaPop` char(3) NOT NULL default '',
`prtMfgPop` char(3) NOT NULL default '',
`prtVehPopulation` int(5) unsigned NOT NULL default '0',
`prtAvgAge` int(6) unsigned NOT NULL default '0',
`prtForecast` int(6) unsigned NOT NULL default '0',
`prtNewPrice1` int(9) unsigned NOT NULL default '0',
`prtNewPrice2` int(9) unsigned NOT NULL default '0',
`prtNewPrice3` int(9) unsigned NOT NULL default '0',
`prtNewPrice4` int(9) unsigned NOT NULL default '0',
`prtNewPrice5` int(9) unsigned NOT NULL default '0',
`prtNewPrice6` int(9) unsigned NOT NULL default '0',
`prtNewPrice7` int(9) unsigned NOT NULL default '0',
`prtNewCurCost` int(9) unsigned NOT NULL default '0',
`prtNewAvgCost` int(9) unsigned NOT NULL default '0',
`prtNewLastCost` int(9) unsigned NOT NULL default '0',
`prtNewVCost1` int(9) unsigned NOT NULL default '0',
`prtNewVCost2` int(9) unsigned NOT NULL default '0',
`prtNewVCost3` int(9) unsigned NOT NULL default '0',
`prtNewVCost4` int(9) unsigned NOT NULL default '0',
`prtNewCoreSell` int(9) unsigned NOT NULL default '0',
`prtNewCoreCost` int(9) unsigned NOT NULL default '0',
`prtOldPrice1` int(9) unsigned NOT NULL default '0',
`prtOldPrice2` int(9) unsigned NOT NULL default '0',
`prtOldPrice3` int(9) unsigned NOT NULL default '0',
`prtOldPrice4` int(9) unsigned NOT NULL default '0',
`prtOldPrice5` int(9) unsigned NOT NULL default '0',
`prtOldPrice6` int(9) unsigned NOT NULL default '0',
`prtOldPrice7` int(9) unsigned NOT NULL default '0',
`prtOldCurCost` int(9) unsigned NOT NULL default '0',
`prtOldAvgCost` int(9) unsigned NOT NULL default '0',
`prtOldLastCost` int(9) unsigned NOT NULL default '0',
`prtOldVCost1` int(9) unsigned NOT NULL default '0',
`prtOldVCost2` int(9) unsigned NOT NULL default '0',
`prtOldVCost3` int(9) unsigned NOT NULL default '0',
`prtOldVCost4` int(9) unsigned NOT NULL default '0',
`prtOldCoreSell` int(9) unsigned NOT NULL default '0',
`prtOldCoreCost` int(9) unsigned NOT NULL default '0',
`prtPrice1` int(9) unsigned NOT NULL default '0',
`prtPrice2` int(9) unsigned NOT NULL default '0',
`prtPrice3` int(9) unsigned NOT NULL default '0',
`prtPrice4` int(9) unsigned NOT NULL default '0',
`prtPrice5` int(9) unsigned NOT NULL default '0',
`prtPrice6` int(9) unsigned NOT NULL default '0',
`prtPrice7` int(9) unsigned NOT NULL default '0',
`prtCurCost` int(9) unsigned NOT NULL default '0',
`prtAvgCost` int(9) unsigned NOT NULL default '0',
`prtLastCost` int(9) unsigned NOT NULL default '0',
`prtVCost1` int(9) unsigned NOT NULL default '0',
`prtVCost2` int(9) unsigned NOT NULL default '0',
`prtVCost3` int(9) unsigned NOT NULL default '0',
`prtVCost4` int(9) unsigned NOT NULL default '0',
`prtCoreSell` int(9) unsigned NOT NULL default '0',
`prtCoreCost` int(9) unsigned NOT NULL default '0',
`prtHstCur` int(10) NOT NULL default '0',
`prtHstYTD` int(10) NOT NULL default '0',
`prtLstYear` int(10) NOT NULL default '0',
`prtDayFill` int(10) NOT NULL default '0',
`prtLostSales` int(10) unsigned NOT NULL default '0',
`prtCurPurch` int(10) NOT NULL default '0',
`prtLifoCost1` int(9) unsigned NOT NULL default '0',
`prtLifoCost2` int(9) unsigned NOT NULL default '0',
`prtLifoCost3` int(9) unsigned NOT NULL default '0',
`prtLifoCost4` int(9) unsigned NOT NULL default '0',
`prtLifoCore1` int(9) unsigned NOT NULL default '0',
`prtLifoCore2` int(9) unsigned NOT NULL default '0',
`prtLifoCore3` int(9) unsigned NOT NULL default '0',
`prtLifoCore4` int(9) unsigned NOT NULL default '0',
`prtDisposalFee` int(9) unsigned NOT NULL default '0',
`prtStkProtect` enum('N','Y') NOT NULL default 'N',
`prtPrChg` datetime default NULL,
`prtPrApply` datetime default NULL,
`prtPrUpdate` enum('N','Y','F','M','I') NOT NULL default 'N',
`prtCommisionPer` int(6) unsigned NOT NULL default '0',
`prtUseCommision` enum('N','Y') NOT NULL default 'N',
`prtRecallMsg` int(10) unsigned NOT NULL default '0',
`prtRelatedSaleMsg` int(10) unsigned NOT NULL default '0',
`prtHazmatMsg` int(10) unsigned NOT NULL default '0',
`prtWarrantyMsg` int(10) unsigned NOT NULL default '0',
`prtWarrantyLength` smallint(5) unsigned NOT NULL default '0',
`prtWarrantyUnit`
enum('NO','MO','DA','YR','WK','HR','LT','LL','ML','TD') NOT NULL default
'NO',
`prtWarrantyMsg2` int(10) unsigned NOT NULL default '0',
`prtWarrantyLength2` smallint(5) unsigned NOT NULL default '0',
`prtWarrantyUnit2`
enum('NO','MO','DA','YR','WK','HR','LT','LL','ML','TD') NOT NULL default
'NO',
`prtInvMod` char(2) NOT NULL default 'S',
`prtBelowCostMargin` int(5) unsigned NOT NULL default '0',
`prtUseBelowCostMargin` enum('N','Y') NOT NULL default 'N',
`prtAboveCostMargin` int(5) unsigned NOT NULL default '0',
`prtUseAboveCostMargin` enum('N','Y') NOT NULL default 'N',
`prtForcedQty` enum('N','Y') NOT NULL default 'N',
`prtIsRestricted` enum('N','Y') NOT NULL default 'N',
`prtHazmatCode` char(3) NOT NULL default '',
`prtShipAnywhere` enum('N','Y') NOT NULL default 'Y',
`prtCInBound` int(11) NOT NULL default '0',
`prtPartTax` char(4) NOT NULL default '',
`prtCoreTax` char(4) NOT NULL default '',
`prtStateFee` char(4) NOT NULL default '',
`prtCIDFee` char(4) NOT NULL default '',
`prtOtherFee` char(4) NOT NULL default '',
`prtDepth` char(18) NOT NULL default '',
`prtHeight` char(9) NOT NULL default '',
`prtWidth` char(9) NOT NULL default '',
`prtMSDS` int(10) unsigned NOT NULL default '0',
`prtRetailCatType` char(3) NOT NULL default '',
`prtLogicOper` enum('N','F','B','L','1') NOT NULL default 'N',
`prtSubType` enum('NONE','TIRE','BATT','PKG','SMPT') NOT NULL default
'NONE',
`prtWrtyTypeID` int(10) unsigned NOT NULL default '0',
`prtSourceCode` char(3) NOT NULL default '',
`prtShopPart` enum('N','Y') NOT NULL default 'N',
`prtPkgGroup` char(10) NOT NULL default '',
`prtPkgSubGroup` char(10) NOT NULL default '',
`prtDisclaimID` int(10) unsigned NOT NULL default '0',
`prtQualifier` char(10) NOT NULL default '',
`prtStatus` enum('ACTIVE','VOID','CHANGEOVER') default NULL,
`prtDCPop` char(5) NOT NULL default '',
`prtCOnOrder` int(10) unsigned NOT NULL default '0',
`prtIsDisplay` enum('N','Y') NOT NULL default 'N',
`prtVolProtect` int(10) unsigned NOT NULL default '0',
`prtDNM` enum('N','Y') NOT NULL default 'N',
`prtLst2Year` int(11) NOT NULL default '0',
`prtLst3Year` int(11) NOT NULL default '0',
`prtDoNotReturn` enum('N','Y') NOT NULL default 'N',
`prtSalesHistTot` int(10) NOT NULL default '0',
`prtSalesHistPrd` smallint(5) NOT NULL default '0',
PRIMARY KEY (`prtPNID`),
UNIQUE KEY `prtUPN` (`prtPN`,`prtStore`,`prtMfg`),
KEY `prtSort` (`prtSort`),
KEY `sku1` (`prtSKU`,`prtStore`),
KEY `prtIPN` (`prtStripped`,`prtStore`,`prtMfg`),
KEY `prtDESC` (`prtDesc`,`prtStore`),
KEY `prtWrtyTypeID` (`prtWrtyTypeID`),
KEY `prtStore` (`prtStore`,`prtMfg`),
CONSTRAINT `parts_f1` FOREIGN KEY (`prtStore`) REFERENCES `cofile`
(`coStore`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Parts Table'
mysql> SHOW VARIABLES LIKE '%buff%';
+-------------------------------+----------+
| Variable_name | Value |
+-------------------------------+----------+
| bdb_log_buffer_size | 1048576 |
| bulk_insert_buffer_size | 8388608 |
| innodb_buffer_pool_awe_mem_mb | 0 |
| innodb_buffer_pool_size | 52428800 |
| innodb_log_buffer_size | 8388608 |
| join_buffer_size | 131072 |
| key_buffer_size | 67108864 |
| myisam_sort_buffer_size | 16777216 |
| net_buffer_length | 65536 |
| preload_buffer_size | 32768 |
| read_buffer_size | 1044480 |
| read_rnd_buffer_size | 262144 |
| sort_buffer_size | 1048568 |
+-------------------------------+----------+
13 rows in set (0.00 sec)
mysql> SHOW TABLE STATUS LIKE 'parts';
+-------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+-------------------------------------------------------------------------------+
| Name | Engine | Version | Row_format | Rows | Avg_row_length |
Data_length | Max_data_length | Index_length | Data_free |
Auto_increment | Create_time | Update_time | Check_time |
Collation | Checksum | Create_options |
Comment
|
+-------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+-------------------------------------------------------------------------------+
| parts | InnoDB | 9 | Fixed | 3921279 | 1643 |
6445596672 | NULL | 2941255680 | 0 | NULL
| 2005-08-29 12:32:47 | NULL | NULL | latin1_swedish_ci
| NULL | | Parts Table; InnoDB free: 6144 kB;
(`prtStore`) REFER `por/cofile`(`coStore`) |
+-------+--------+---------+------------+---------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+-------------------+----------+----------------+-------------------------------------------------------------------------------+
1 row in set (0.11 sec)
SGreen@stripped wrote:
>
>
> Clyde Lewis <cllewis@stripped> wrote on 08/29/2005 01:47:11 PM:
>
> > Guys,
> >
> > I have a huge table to which I'm attempting to update the foreign key
> > and index. It is taking me more than 20 hrs to complete the process and
> > would like to know if someone can point me in the right direction.
> > Please let me know of any additional information that I should provide.
> >
> >
> > mysql> show index from parts;
> > +-------+------------+---------------+--------------+---------------
> >
> +-----------+-------------+----------+--------+------+------------+---------+
>
> >
> > | Table | Non_unique | Key_name | Seq_in_index | Column_name |
> > Collation | Cardinality | Sub_part | Packed | Null | Index_type |
> Comment |
> > +-------+------------+---------------+--------------+---------------
> >
> +-----------+-------------+----------+--------+------+------------+---------+
>
> >
> > | parts | 0 | PRIMARY | 1 | prtPNID |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 0 | prtUPN | 1 | prtPN |
> > A | 326773 | NULL | NULL | | BTREE |
> |
> > | parts | 0 | prtUPN | 2 | prtStore |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 0 | prtUPN | 3 | prtMfg |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtSort | 1 | prtSort |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | sku1 | 1 | prtSKU |
> > A | 18 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | sku1 | 2 | prtStore |
> > A | 18 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtIPN | 1 | prtStripped |
> > A | 230663 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtIPN | 2 | prtStore |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtIPN | 3 | prtMfg |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtDESC | 1 | prtDesc |
> > A | 301636 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtDESC | 2 | prtStore |
> > A | 3921279 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtWrtyTypeID | 1 | prtWrtyTypeID |
> > A | 18 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtStore | 1 | prtStore |
> > A | 18 | NULL | NULL | | BTREE |
> |
> > | parts | 1 | prtStore | 2 | prtMfg |
> > A | 46132 | NULL | NULL | | BTREE |
> |
> > +-------+------------+---------------+--------------+---------------
> >
> +-----------+-------------+----------+--------+------+------------+---------+
>
> >
> >
> >
> > mysql> explain select * from parts;
> > +----+-------------+-------+------+---------------+------+---------
> > +------+---------+-------+
> >
> > | id | select_type | table | type | possible_keys | key | key_len |
> > ref | rows | Extra |
> > +----+-------------+-------+------+---------------+------+---------
> > +------+---------+-------+
> >
> > | 1 | SIMPLE | parts | ALL | NULL | NULL | NULL |
> > NULL | 3921279 | |
> > +----+-------------+-------+------+---------------+------+---------
> > +------+---------+-------+
> >
> > 1 row in set (0.00 sec)
> >
> > Files from mysqldata directory
> > -rw-rw---- 1 mysql mysql 18K Aug 25 17:24 parts.frm
> > -rw-rw---- 1 mysql mysql 8.9G Aug 29 12:32 parts.ibd
> >
> >
> > DB MySQL: 4.1.11
> > OS: Solaris 9
> > Hardware: SUN 2900; 32GB RAM
> >
> >
> Would you be so kind as to also provide the results of
>
> SHOW CREATE TABLE parts\G
> and
> SHOW VARIABLES LIKE '%buff%';
> and
> SHOW TABLE STATUS LIKE 'parts'\G
>
> Based on the sizes of your fields, you may just have a lot of data to
> index. The buffer settings will tell us how much space you have
> allocated for sorting and key creation.
>
> How fast are your disks and what else is using them right now? Make
> sure your anti-virus scanner is not checking every write from mysql to
> your data directory (that can really slow you down, especially during
> an index rebuild).
>
> Please respond to the whole list and not just to me. I have a busy
> afternoon and may not be able to get back to you very soon.
>
> Shawn Green
> Database Administrator
> Unimin Corporation - Spruce Pine
>