Mon Sep 10 15:29:52 PDT 2007
- Previous message: [Slony1-general] size of requests stored in sl_log_x
- Next message: [Slony1-general] size of requests stored in sl_log_x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 9/10/2007 4:01 PM, Cyril SCETBON wrote: > > Jan Wieck wrote: >> On 9/10/2007 12:49 PM, Cyril SCETBON wrote: >>> >>> Christopher Browne wrote: >>>> Cyril SCETBON wrote: >>>>> >>>>> >>>>> Jan Wieck wrote: >>>>>> On 9/10/2007 10:07 AM, Cyril SCETBON wrote: >>>>>>> Hi, >>>>>>> >>>>>>> We're hitting 400 requests per second and noticed that sl_log_? >>>>>>> are growing a lot. This is also due to the fact that our tables >>>>>>> have a lot of columns (more that 100). We noticed that slony >>>>>>> stores each column and its value for each request in sl_log_x. >>>>>>> Would it not be more optimized to store just the user request ? >>>>>>> Actually, a user is just updating a few column, or inserting a >>>>>>> tuple by giving some attributes but not all, however as slony >>>>>>> stores every column with its value it sl_log_x, these tables are >>>>>>> growing very fast :-( >>>>>> >>>>>> Slony only logs columns where the value actually has changed. >>>>>> Please explain in detail how you propose that the log table would >>>>>> contain which columns have changed without naming them. >>>>> when I execute this command on the master : >>>>> >>>>> insert into t1(ise) values('cyril100001'); >>>>> >>>>> I can see in sl_log_1 : >>>>> >>>>> psql>select log_cmddata from sl_log_1; >>>>> (ise,id,id2) values ('cyril100001','24161',NULL) >>>>> >>>>> dbtest=# \d t1; >>>>> Table "public.t1" >>>>> Column | Type | >>>>> Modifiers >>>>> --------+-----------------------+------------------------------------------------- >>>>> >>>>> ise | character varying(54) | not null >>>>> id | integer | not null default >>>>> nextval('t1_id_seq'::regclass) >>>>> id2 | integer | >>>>> Indexes: >>>>> "t1_pkey" PRIMARY KEY, btree (ise) >>>>> Triggers: >>>>> "_CLUSTER1_logtrigger_1" AFTER INSERT OR DELETE OR UPDATE ON t1 >>>>> FOR EACH ROW EXECUTE PROCEDURE "_CLUSTER1".logtrigger('_CLUSTER1', >>>>> '1', 'kvv') >>>>> >>>>> I agree for id which is an auto_increment but not for id2 :-( >>>>> >>>>> In another plateform my table has more than 100 columns as said >>>>> earlier and that's really matter :-( >>>> Jan's request seems to remain perfectly good... >>>> >>>> "Please explain in detail how you propose that the log table would >>>> contain which columns have changed without naming them." >>>> >>>> It is *not* obvious how to avoid naming all of the columns. It is >>>> not safe to simply assume "that column was null so we may omit it" - >>>> different nodes may be configured differently, and it may well be >>>> important to actually have that NULL value. >>> I was just thinking of using the same way as other statement based >>> replication way like does mysql, that is to say just log the request >>> that user did. However, I forgot that slony uses triggers to log >>> requests :-( Maybe finding a way to know which current request is >>> done on the table for which the trigger has been called would be >>> possible ? >> >> Turning Slony into a statement based replication system would make it >> far worse. > You may be right. It was just a suggestion to do something to replace > the long SQL string by a shorter one to gain space, and so performance > when getting blocks from disks with more rows :-) >> Queries depend on the exact transaction commit order with respect to >> the exact rows that are visible to them. That in addition to the >> non-deterministic behavior of sequential scans and a myriad of >> functions ... how do you expect some query like >> >> update mytable set foo = nextval('someseq') where foo is null; >> >> to lead to exactly the same result on two different databases? Not >> even the order in which the rows are processed is defined. > If MySQL support it , why slony would not ? > (http://dev.mysql.com/doc/refman/5.1/en/replication-features-autoincid.html), > but you right for deterministic functions it's hard if value is added in > the statement. But it's not what I've suggested. What does MySQL's autoincrement feature have to do with the above UPDATE query? >> Compared to Postgres, MySQL is a fairly limited system feature wise. >> Yet with their limited functionality the MySQL user manual already >> states that several features are not supported by their statement >> based replication. What do you think the corresponding documentation >> for Slony would look like? > Sorry, but you can compare it to the log shipping feature of slon with > less lag time. In what way are these two even remotely similar? Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #================================================== JanWieck at Yahoo.com #
- Previous message: [Slony1-general] size of requests stored in sl_log_x
- Next message: [Slony1-general] size of requests stored in sl_log_x
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-general mailing list