Interesting, but I feel the difference is rather small - could you rerun with, say, 50.000 queries ? Also, different concurrency levels (1, 100) might be interesting to see.
Yes, I'm to lazy to do it myself, what did you think :-p On Tue, Nov 30, 2010 at 4:01 PM, Wagner Bianchi <wagnerbianch...@gmail.com>wrote: > Friends, I did a benchmark regarding to this subject. > Please, I am considering your comments. > => http://wbianchi.wordpress.com/2010/11/30/insert-x-insert-delayed/ > > Best regards. > -- > WB > > > 2010/11/30 Wagner Bianchi <wagnerbianch...@gmail.com> > > Maybe, the table in use must be a table that is inside cache now - SHOW >> OPEN TABLES, controlled by table_cache, I mean. >> >> Well, if the amount of data trasactioned is too small as a simple INSERT, >> you don't have to be worried, I suggest. If you partition the table, we must >> a benchmark to know the performance relation of a INSERT and compress data >> into Archive Storage Engine or the insertion data into a partitioned table. >> >> Best regards. >> -- >> WB >> >> >> 2010/11/30 Johan De Meersman <vegiv...@tuxera.be> >> >> I would assume that it's slower because it gets put on the delay thread >>> anyway, and thus executes only whenever that thread gets some attention. I'm >>> not sure wether there are other influencing factors. >>> >>> I should also think that "not in use" in this context means "not locked >>> against inserts", so the MyISAM insert-while-selecting at the end of a >>> continguous table may well apply. >>> >>> No guarantees, though - I'm not that hot on this depth. >>> >>> >>> >>> On Tue, Nov 30, 2010 at 8:46 AM, WLGades <wlga...@gmail.com> wrote: >>> >>>> What I'm confused by though, is this line. >>>> >>>> "Note that INSERT DELAYED is slower than a normal INSERT if the table is >>>> not >>>> otherwise in use." What's the definition of "in use"? Does a logging >>>> table >>>> do that given that it's pretty much append-only/write-only? >>>> >>>> Waynn >>>> >>>> On Mon, Nov 29, 2010 at 10:19 PM, Johan De Meersman <vegiv...@tuxera.be >>>> >wrote: >>>> >>>> > No, I think it's a good idea to do INSERT DELAYED here - it's only >>>> logging >>>> > application, and it's generally more important to not slow down the >>>> > application for that. It's only ever into a single table, so there's >>>> only >>>> > going to be a single delay thread for it anyway. >>>> > >>>> > Archive tables are a good idea, agreed, but I suspect that inserts >>>> into >>>> > that are going to be slower than into regular MyISAM because of the >>>> > compression, so why not use that overhead to (slightly) speed up your >>>> > end-user experience instead ? >>>> > >>>> > You can always partition the table based on the log date or whatever, >>>> if >>>> > your table risks getting too big. >>>> > >>>> > >>>> > >>>> > On Tue, Nov 30, 2010 at 1:03 AM, Wagner Bianchi < >>>> wagnerbianch...@gmail.com >>>> > > wrote: >>>> > >>>> >> Well, analyze if you need to create an excessive overhead into the >>>> MySQL >>>> >> Server because a simple INSERT. What you must have a look is it: >>>> >> >>>> >> - How much data this connection is delivering to MySQL's handlers? >>>> >> - A word DELAYED in this case is making MySQL surfer? >>>> >> >>>> >> Perhaps, you are sophisticating something that do not need it. >>>> Besides it, >>>> >> analyzing your "log table", I imagine this table can be an Archive >>>> table >>>> >> instead of MyISAM. Log tables or history tables can be controlled by >>>> >> Archive >>>> >> Storage Engine to have more compressed data. Although, Archive >>>> Storage >>>> >> Engine only supports SELECT and INSERT. Maybe, a good deal to you, >>>> get rid >>>> >> of you INSERT DELAYED: >>>> >> >>>> >> >>>> >> - ALTER TABLE <tbl_name> ENGINE = ARCHIVE; >>>> >> >>>> >> >>>> >> Best regards. >>>> >> -- >>>> >> WB >>>> >> >>>> >> >>>> >> 2010/11/29 WLGades <wlga...@gmail.com> >>>> >> >>>> >> > I'm adding a table to our site that logs all page loads. In the >>>> past, >>>> >> when >>>> >> > I built this, I used MyISAM and INSERT DELAYED. I went back to >>>> look at >>>> >> the >>>> >> > documentation to see if I should still do this, and saw this (taken >>>> from >>>> >> > http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html): >>>> >> > >>>> >> > Note that INSERT DELAYED is slower than a normal INSERT if the >>>> table is >>>> >> not >>>> >> > otherwise in use. There is also the additional overhead for the >>>> server >>>> >> to >>>> >> > handle a separate thread for each table for which there are delayed >>>> >> rows. >>>> >> > This means that you should use INSERT DELAYED only when you are >>>> really >>>> >> sure >>>> >> > that you need it. >>>> >> > >>>> >> > Does that mean that I shouldn't use it if all I'm doing is INSERT >>>> >> > (essentially an append-only table), with only very occasional >>>> SELECTs? >>>> >> In >>>> >> > addition, the last time I took this approach for logging, it worked >>>> well >>>> >> > until the table got to 65M+ rows, when it would crash every now and >>>> >> then. >>>> >> > I >>>> >> > know I can archive off the table on a per month/quarter basis as >>>> well. >>>> >> > >>>> >> > Waynn >>>> >> > >>>> >> >>>> > >>>> > >>>> > >>>> > -- >>>> > Bier met grenadyn >>>> > Is als mosterd by den wyn >>>> > Sy die't drinkt, is eene kwezel >>>> > Hy die't drinkt, is ras een ezel >>>> > >>>> >>> >>> >>> >>> -- >>> Bier met grenadyn >>> Is als mosterd by den wyn >>> Sy die't drinkt, is eene kwezel >>> Hy die't drinkt, is ras een ezel >>> >> >> > -- Bier met grenadyn Is als mosterd by den wyn Sy die't drinkt, is eene kwezel Hy die't drinkt, is ras een ezel