List:General Discussion« Previous MessageNext Message »
From:Brent Baisley Date:March 2 2005 10:04pm
Subject:Re: Switching to InnoDB turns out dissapointing
View as plain text  
Hmmmm, sounds like you are trying to mix OLTP and OLAP in one database 
structure. That's a tough one. You want your tables designed to always 
accept data in real time, but once the data is in, it doesn't change 
and you want to query it. Relational vs. Dimensional data models.

Your hardware is pretty good. Sorry, I missed the early thread 
responses, did you figure out where things are bottlenecking (CPU, Disk 
I/O, RAM, Network)? That will help you focus on what you can change in 
your software if you can't upgrade your hardware.

The first place to always look is your queries. Optimizing your queries 
always gives you the best bang for you buck. Use explain to make sure 
MySQL is using the right indexes, especially since you are using date 
ranges. Sometimes MySQL may use the best index, sometimes it won't, 
simply by changing the date range. It won't hurt to use hints (USE, 
FORCE, IGNORE) in your query if you know you want MySQL to use a 
certain index.
You could possible also change you structure slightly, like add a 
WeekNumber column. It could just be an incrementing week number with 
1/1/2004 being week 1, 1/1/2005 being week 53, etc. So it would be 
weeks since 1/1/2004. It could be just a regular int type, which should 
be quicker than searching on a date field. The idea is to add constants 
on entry to speed up the summaries. Also, try to eliminate any and all 
calculations from your query, like replace datesub(now(), interval 12 
month) with a constant. Which means figuring out the right date before 
hand.

Would you be able to run daily summaries? Then your weekly summaries 
are just running against 7 records.

1 million rows is not that big, so you should be able to get good 
performance, it's just a matter of structuring things correctly.

Heck, it may end up that the best thing to do is an insert  select into 
another table (maybe even a temp table), which you then run your 
summaries against. Since your "dump" is sequential access to disk (the 
same order the data was entered), it may be very quick.



On Mar 2, 2005, at 2:13 PM, Alfredo Cole wrote:

> El Mié 02 Mar 2005 11:41, Brent Baisley escribió:
>> Coming in late on this thread. The testing on your laptop, are you 
>> just
>> running the one query or are you somehow emulating the typical load 
>> you
>> are trying to design for? As you said, you are trying to improve
>> concurrency, so you'll need to compare MyISAM and InnoDB setups under
>> load (i.e. the weekly run+typical activity).
>>
>> If the concurrency you are trying to improve is caused by your weekly
>> runs, I would try doing replication. Your summarization queries would
>> run against the replicated machine and create a text file for batch
>> import/update into the table you need to update. That way you remove
>> the load from the main machine caused by the summary queries.
>>
>
> Thank you, Brent. Actually, there are three servers involved, all with 
> a
> similar configuration:
>
> Server 1 - 2 Xeon 2.4 Ghz HT with 4 Gb RAM and three 36 GB SCSI HD's 
> 10K in
> RAID 5 holding the main database. Uses a openMosix kernel.
> Server 2 - Identical config used for replication. All selects are run 
> against
> this server.
> Server 3 - Same config except for 8 Gb RAM. Acts as an application 
> server
> running the ERP software and acting as connection via a NX server for 
> 200+
> users.
>
> The servers must be available on a 24/7 basis, and are never brought 
> down
> except for routine maintenance, at which time their roles are switched
> temporarily.
>
> Running the application that updates database structures, when needed, 
> must be
> done before 7:00 am because customers begin to come in at 8:00 am, and 
> should
> not last for more than 30 minutes. We are using MyISAM tables and they 
> have
> to be locked when beeing updated by concurrent users, like salesmen 
> invoicing
> customers in real time (it's a hardware store/True Value convenience 
> chain of
> 9 stores all running our server-based ERP). We have setup another 
> database
> and parallel version of our ERP software with InnoDB tables for 
> testing, and
> we are encountering this problem. With MyISAM tables, locking them 
> causes
> some terminals to wait for up to one minute at peak hours, which seems 
> like
> an eternity when a customer is waiting for his invoice to go and pay, 
> get his
> merchandise and leave. This we are hoping to improve with row level 
> locking.
> Inventory, AR, GL, etc. are updated in real time. However, statistics 
> such as
> history sales, sales forecasting, average discounts, profit margins, 
> EOQ,
> DRP, etc. are calculated on a weekly basis moving the period to always 
> hold a
> year's worth of data, using something like:
>
> select sum(sales_value) from invoices where 
> invoice_date>=datesub(now(),
> interval 12 month)
>
> The total items in inventory is 45,000 and the invoices table has 
> about 1
> million rows. The system was started January 2004.
>
> In my laptop I can only run single processes, but that's where I test 
> before
> making software, data, and configuration changes in the servers. 
> Compiling
> changes to the software (our own ERP) must also be made in my laptop, 
> turned
> into an rpm file and then installed in the application server (Server 
> 3).
>
> Best regards.
>
> -- 
> Alfredo J. Cole
> Grupo ACyC
> www.acyc.com - www.clshonduras.com - SolCom - www.acycdomains.com
>
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    
> http://lists.mysql.com/mysql?unsub=1
>
>
>
-- 
Brent Baisley
Systems Architect
Landover Associates, Inc.
Search & Advisory Services for Advanced Technology Environments
p: 212.759.6400/800.759.0577

Thread
Switching to InnoDB turns out dissapointingAlfredo Cole2 Mar
  • Re: Switching to InnoDB turns out dissapointingGary Richardson2 Mar
    • Re: Switching to InnoDB turns out dissapointingScott Klarenbach2 Mar
    • Re: Switching to InnoDB turns out dissapointingAlfredo Cole2 Mar
      • Re: Switching to InnoDB turns out dissapointingGary Richardson2 Mar
      • Re: Switching to InnoDB turns out dissapointingJochem van Dieten2 Mar
Re: Switching to InnoDB turns out dissapointingHeikki Tuuri2 Mar
  • Re: Switching to InnoDB turns out dissapointingAlfredo Cole2 Mar
    • Re: Switching to InnoDB turns out dissapointingBrent Baisley2 Mar
      • Re: Switching to InnoDB turns out dissapointingAlfredo Cole2 Mar
        • Re: Switching to InnoDB turns out dissapointingBrent Baisley2 Mar
          • Re: Switching to InnoDB turns out dissapointingAlfredo Cole3 Mar
          • Re: Switching to InnoDB turns out dissapointingPhilippe Poelvoorde3 Mar
RE: Switching to InnoDB turns out dissapointingJon Frisby2 Mar
Re: Switching to InnoDB turns out dissapointingHeikki Tuuri2 Mar