RE: Slowdown problem when writing 1.7million records - Mailing list pgsql-general
From | Creager, Robert S |
---|---|
Subject | RE: Slowdown problem when writing 1.7million records |
Date | |
Msg-id | 10FE17AD5F7ED31188CE002048406DE8514CBE@lsv-msg06.stortek.com Whole thread Raw |
In response to | Slowdown problem when writing 1.7million records ("Stephen Livesey" <ste@exact3ex.co.uk>) |
List | pgsql-general |
I just joined this list, so pardon if this has been suggested. Have you tried 'COPY expafh FROM stdin', rather than inserting each record? I'm managing a 2.5 million record import, creating a btree index on two columns, and then vacuuming the db in 36 minutes (on an Ultra 5 - similar to a AMD K6-2 500). The data is being read from a 600Mb file. I'm also using 7.1beta5 with the -F flag on the backend (prevents db server from flushing after each transaction - can be dangerous, but the server is faster). I've attached a Perl script I use - the key being the putline command. Note that when using COPY, default values, sequences, etc. are not used. If you have a SERIAL field, you have to put in the incrementing values yourself, and then use 'setval' to get thing correct again. I apologize for the Perl script - it's not commented. If you have trouble understanding it, let me know and I'll spruce it up. Robert Creager Senior Software Engineer Client Server Library 303.673.2365 V 303.661.5379 F 888.912.4458 P StorageTek INFORMATION made POWERFUL > -----Original Message----- > From: Stephen Livesey [mailto:ste@exact3ex.co.uk] > Sent: Wednesday, February 28, 2001 2:20 AM > To: Tom Lane > Cc: pgsql-general@postgresql.org > Subject: RE: [GENERAL] Slowdown problem when writing > 1.7million records > > > > > > No, it's not. Do you have any triggers or rules on this table that > > you haven't shown us? How about other tables referencing this one > > as foreign keys? (Probably not, if you're running an identical test > > on MySQL, but I just want to be sure that I'm not missing > something.) > > I have no triggers or rules. I have only created 1 table and > their are no > foreign keys. > > > > > How exactly are you writing the records? > > First I read the data from a 'Powerflex' file and hold this > in a record set. > pfxstmt = pfxconn.createStatement(); > pfxrs = pfxstmt.executeQuery("SELECT * from expafh"); > > I then perform a loop which writes the data to my 'Postgresql' file as > follows: > stmt = conn.createStatement(); > while (pfxrs.next()) { > cmd = "INSERT INTO expafh VALUES "; > cmd = cmd + > "('"+pfxrs.getString(2)+"',"+pfxrs.getString(3)+",'"+pfxrs.get > String(4)+"',' > "+pfxrs.getString(5)+"')"; > stmt.executeUpdate(cmd); > } > > > > > I have a suspicion that the slowdown must be on the client > side (perhaps > > some inefficiency in the JDBC code?) but that's only a guess at this > > point. > > > > I have used identical code for all of my testing, the only > changes being > which drivers I use to access the data. > > > Thanks > Stephen Livesey > > Legal Disclaimer: > Internet communications are not secure and therefore Exact > Abacus does > not accept legal responsibility for the contents of this > message. Any views > or opinions presented are solely those of the author and do > not necessarily > represent those of Exact Abacus unless otherwise specifically stated. > > ---------------------------(end of > broadcast)--------------------------- > TIP 2: you can get off all lists at once with the unregister command > (send "unregister YourEmailAddressHere" to > majordomo@postgresql.org) >
Attachment
pgsql-general by date: