Howdy - I have a question concerning MySQL performance. From the list, it seems to be the topic as of late!
Database Server: Dual Pentium III 1.2GHz COMPAQ server with 2GB of RAM running Red Hat LInux, 7.2 (Enigma). MySQL version is 3.23.52-Max-log. All tables are InnoDB. Storage: All MySQL InnoDB table space is located on an EMC SAN box. Application servers: 1 box configured like database server (dual processor), 5 boxes same except single processors and 1 GB of RAM Network: Application servers are connected to each other and database server via 100 Mbit full duplex. Database server is connected to EMC SAN via Gigabit ethernet. Load on MySQL databse server at the time is 30 connections to MySQL, 43 Linux process on the box total. This is a combination of inserts, updates and deletes. Each of these commands are accessing a single record (via primary key on the table, spread over about 30 tables, table sizes varying from 2K rows to 30M+ rows. None of the tables have autoincrement columns in them. All tables have indexes on the appropriate fields so the commands built are able to use them. Slow Query log is clean. All code is written on C++ and uses the C api calls to the mysql client library. Each transaction consists of individual commands: begin transaction select via indexed field (about 7 records result set) and do for each row: -update into some table (one row) -check result to see that the update took place (via calling mysql_info to see that the update found rows to apply to) and turning the update into an insert if no records were applied (happens about 10% of the time) -insert into a large table (one row) -delete from a large table (one row) commit transaction I obtain my timings by running batches of anywhere between 20,000 and 150,000 of the above transactions. When 1 run a process on an application server and calculate what is actually going on, I am seeing MySQL server able to process about 500 SQL commands/second. When I look at the InnoDB status, I can verify about 500 commands/second throughput. Of course, everything has limits and from my earlier playing with MySQL, I found that it has as a limiting factor of how many SQL commands per second it can accept, interpret and execute an a given hardware setup. For example, on my early tests, I saw that if I did single record inserts, I could process only a few hundred inserts per second, but when I did multiple inserts per command, I could actually insert tens of thousands of records per second. So, here are my questions: 1) Given the database server above and wrapping everything in transactions, is 500 SQL commands/second accepted, interpreted, and executed a good number? By good I mean high performance, not valid. 2) What experience do other folks have with InnoDB and transactions? Yes, I know they work fine (I have tried to break them and they do work fine), but, what are the performance issues with using them? Exactly how expensive are transactions? 3) What experiences have others had with MySQL throughput in terms of commands/second? Thanks in advance for your input! Ken Hylton Programmer Analyst IV LEC Systems & Programming Billing Concepts, Inc. 7411 John Smith Drive San Antonio, Texas 78229-4898 (210) 949-7261 --------------------------------------------------------------------- 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