Hi, I have hundreds of mysql databases on a server, mostly filled with newspaper articles for web sites.
For one particular database, I have about 10,000 archived articles I want to load in. I want to do this without affecting the performance of the live site (or any other sites using this db server.) The table in question has many indexes on the live table, including a full-text index. I'm not so concerned about the speed of the loading, just as fast as possible without noticable live db access performance loss. Now for loading, one way to do it is like this: insert into LIVE_DB.articles select * from IMPORT_DB.articles; The problem with this is that no read/writes can happen on this table while the articles are loaded, basically "hanging" the web site. Then I thought maybe this would help: insert LOW_PRIORITY into LIVE_DB.articles select * from IMPORT_DB.articles; This doesn't help, it still locks the table during the query, not per record (I think?) The only other alternative was to insert record by record with a script using low priority inserts (I used php.) This is slower, but it should avoid the locking problems and performance issues (or so I thought): <?php $sql->query("select id from IMPORT_DB.articles"); // loop through each record to import while ($sql->next()) { $id = $sql->record['id']; // insert current record into live db $sql2->query("insert LOW_PRIORITY into LIVE_DB.articles select * from IMPORT_DB.articles where id='$id'"); } ?> This inserts each record one by one with LOW_PRIORITY, so if a read or write comes along, it _should_ immediately let the query through, right? Running this script clips along at about 5-10 records/second. But during this time, live db access becomes _extremely_ slow, taking up to a matter of minutes to execute queries that normally take seconds. Not just the table being loaded, but any table in any database on the server! The system RAM and CPU cycles hardly move, this isn't a problem. Mostly idle with a load of 0.01 to 0.5, and 70%+ of 2GB RAM available. What is happening here? a table locking/queueing issue, or something else? Maybe there is a better way to load data without affecting performance? MySQL 3.23.33, Solaris 8 Sparc. Monte --------------------------------------------------------------------- Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail <[EMAIL PROTECTED]> To unsubscribe, e-mail <[EMAIL PROTECTED]> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php