rasqlinsert and SQL TRIGGERS

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


Oh I forgot to mention that the new rasqlinsert() is still being tested.
I'll upload it tomorrow, when I get back to the city.
Carter 

On Jun 30, 2013, at 11:10 AM, Carter Bullard <carter at qosient.com> wrote:

> 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/00542b73/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/00542b73/attachment.bin>


More information about the argus mailing list