rasqlinsert and SQL TRIGGERS

Carter Bullard carter at qosient.com
Sun Jun 30 11:10:41 EDT 2013


rasqlinsert() has been rewritten to be more threaded, and to do better
logging.  We do have a database performance debug statement that
you get from -D2, and it periodically tells how many inserts, updates,
cache misses, etc....  Doesn't mysql have some logging for performance?

I don't have any problems supporting anything that makes the database
stuff work better.  So not problem with providing something like a list of
post table formation commands, however, we need a syntax for the file.

Am I simply going to pass whatever strings to a mysql_real_query() statement?
Or do I need to do any form of variable substitution?

I don't use triggers, primarily because I generally don't have events to
trigger on.  I mostly poll my existing tables looking for specific things, or
have multiple rasqlinserts() to generate the specific views I want.

For your example, so what are you doing?  Creating a table of unique saddr daddr
pairs, with a first seen timestamp?  Seems easy enough to do with rasqlinsert() ?
Or daily with a command line mysql call ?  Always lots of ways to do stuff....

Carter

On Jun 28, 2013, at 6:58 PM, Matt Brown <matthewbrown at gmail.com> wrote:

> Thanks Dave.
> 
> It seems that Carter is okay with implementing a method within rasqlinsert() to handle arbitrary SQL after table creation (as per his last response).
> 
> 
> However, I am attempting to insert records that contain unique saddr+daddr pairs from the existing [live] table (`argus`.`argusTable_2013_06_28`) into another table:
> 
> 
> 
> DELIMITER |
> 
> 
> CREATE TRIGGER `argus`.`after_argus_insert` 
> 
> 
> AFTER INSERT ON `argus`.`argusTable_2013_06_28` FOR EACH ROW
> 
> 
> BEGIN
> 
> 
> SET @a = UNIX_TIMESTAMP(sysdate(6));
> 
> 
> INSERT INTO argus.historic_argus_saddrdaddr(inserttime, saddr, daddr)
> 
> 
> (
> 
> 
> SELECT @a, NEW.saddr, NEW.daddr
> 
> 
> FROM (SELECT NEW.saddr, NEW.daddr) as derived
> 
> 
> WHERE NOT EXISTS (SELECT saddr, daddr FROM argus.historic_argus_saddrdaddr where historic_argus_saddrdaddr.saddr = NEW.saddr and historic_argus_saddrdaddr.daddr = NEW.daddr)
> 
> 
> );
> 
> 
> IF ROW_COUNT() > 0 THEN
> 
> 
> UPDATE argus_status SET saddrdaddrlastmodtime=@a;
> 
> 
> END IF;
> 
> 
> END;
> 
> 
> |
> 
> 
> DELIMITER ;
> 
> 
> 
> 
> 
> I just added this today at close of business, and quickly monitored (`ps -o rss`) of rasqlinsert, and didn't see much of a jump.
> 
> 
> This brings up another point...
> 
> Carter: what do you think of including a count of buffered bytes or buffered records-to-be-inserted on a -D (level)?
> Maybe write the info to syslog every N seconds, to include the per-second count, the per N/second average, and the per N count?  I ask because I'm not sure how to accurately keep an eye on how much badness this TRIGGER will introduce (is tracking `ps -o rss` over time enough)?
> 
> 
> Am I way off base with regards to my methodology for tracking unique saddr/daddr pairs?
>  
> 
> Thanks very much,
> 
> Matt
> 
> 
> On Fri, Jun 28, 2013 at 6:44 PM, David Edelman <dedelman at iname.com> wrote:
> Matt,
> 
> A trigger is defined on a table so by definition, a table has to exist
> before the trigger can be created. A trigger exists only for the lifetime of
> its associated table. If you drop the table, you drop the trigger. If you
> rename a table that has an associated trigger, the trigger is updated to
> reflect the new table name.
> 
> Can you give a more concrete example of something that you would like to do
> with a trigger? There may be another way to achieve the same goal.
> 
> --Dave
> 
> -----Original Message-----
> From: argus-info-bounces+dedelman=iname.com at lists.andrew.cmu.edu
> [mailto:argus-info-bounces+dedelman=iname.com at lists.andrew.cmu.edu] On
> Behalf Of Matt Brown
> Sent: Thursday, June 27, 2013 5:56 PM
> To: Carter Bullard
> Cc: argus-info at lists.andrew.cmu.edu
> Subject: Re: [ARGUS] rasqlinsert and SQL TRIGGERS
> 
> Thanks for the fast reply.
> 
> File or argument based would be great!
> 
> Do you have experience using TRIGGERs on your target tables?
> 
> 
> Thanks,
> 
> Matt
> 
> 
> 
> On Jun 27, 2013, at 5:39 PM, Carter Bullard <carter at qosient.com> wrote:
> 
> > I've been working on rasqlinsert() to fix some problems, and have some
> fixes ready after this weekend.
> > If there are some post table creation  mysql statements you want to make,
> for each table,
> > we can just attach a file that has the statements in them, and I'll run
> them with each new table.
> > Or something like that could work?
> >
> > Carter
> >
> >
> > On Jun 27, 2013, at 5:30 PM, Matt Brown <matthewbrown at gmail.com> wrote:
> >
> >> Hello,
> >>
> >> I'm interested in attaching TRIGGERs to the table(s) created by
> rasqlinsert.
> >>
> >> I've spent some time hunting down various solutions to the problem of
> >> creating TRIGGERs upon table creation, including reading that you
> >> can't attach TRIGGERs to tables in the information_schema schema.
> >>
> >> Carter/Dave/etc: Do you all have any idea on how something like this
> >> can be handled?  I began researching something along the lines of
> >> `CREATE TABLE n LIKE x`, but it doesn't appear that `LIKE` carries
> >> TRIGGERs from the template table.
> >>
> >>
> >> Any assistance is appreciated.
> >>
> >>
> >> Thanks,
> >>
> >> Matt
> >
> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20130630/7b6dcb84/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 6837 bytes
Desc: not available
URL: <https://pairlist1.pair.net/pipermail/argus/attachments/20130630/7b6dcb84/attachment.bin>


More information about the argus mailing list