Hi,

Justin points are corrects but TokuDB perform better for OLAP if you set all 
your indexed to clustered.  
We have many satisfy users on TokuDB and  it's a mature storage. 

POC  well 

Stéphane Varoqui, Senior Consultant
Phone: +33 695-926-401, skype: svaroqui
http://www.mariadb.com

Le Jul 5, 2015 à 4:12 AM, Justin Swanhart a écrit :

> Hi,
> 
> TokuDB works best when the dataset is too large for memory and reads and 
> writes are small (ie, it doesn't excel at OLAP, but is good for OLTP).  If 
> all data fits in memory, then it performs up to 3x worse than InnoDB.  Both 
> have row level locking, though I don't know how TokuDB takes locks if you 
> have to scan a table.  For MVCC repeatable-read I assume it has to behave 
> like InnoDB repeatable-read, but I don't know for sure.  You could ask about 
> TokuDB on the Percona forums.
> 
> If you are read head, why do you need select for update?  At least do lock in 
> share mode, then when you write, you will upgrade to X lock, with small 
> chance of deadlock, but you will get better concurrency, significantly better.
> 
> --Justin
> 
> Regards,
> 
> --Justin
> 
> On Sat, Jul 4, 2015 at 5:36 PM, Roberto Spadim <[email protected]> wrote:
> i think the problem is select for update (i tryed with myisam/aria but
> they was using lock tables to 'solve' problems, but it didn't worked,
> obvious too much small updates/deleted and big reads is a problem with
> myisam/aria), i will check again what to do
> 
> i didn't tested tokudb yet, any experience is wellcome here, does it
> 'works' like innodb with many small writes and big reads? (i will
> check it with some days, i will try to log all queries and execute the
> same workload at another server - my laptop and check what happens)
> 
> 2015-07-03 20:17 GMT-03:00 Justin Swanhart <[email protected]>:
> > Hi,
> >
> > You can't create a slave of the master itself, because you can't replicate
> > from/to same server_id.
> >
> > Before you consider other solutions, you should look into why InnoDB is
> > locking.  InnoDB locks are held during INSERT/UPDATE/DELETE operations and
> > during SELECT .. FOR UPDATE or SELECT .. LOCK IN SHARE MODE.  If you are
> > getting locking issues it is because multiple writers are writing to the
> > same rows, or you are using SELECT with a locking option.
> >
> > If you are doing updates or deletes, make sure the table is well indexed for
> > the operation.  InnoDB will lock all rows it traverses, so if an
> > update/delete needs a FTS, whole table is locked.  You can somewhat mitigate
> > this problem with READ COMMITTED, as it will release the locks that are not
> > needed after the scan finishes, but you will still lock many (or all) rows
> > during the scan.
> >
> > FlexCDC has an SBR replication mechanism in trunk/ (it is in
> > consumer/replication I think).  I haven't tested it in awhile but SBR
> > doesn't really change.  I can't remember if it supports filtering only a
> > specific table though.  I wrote it four or five years ago so my memory is
> > fuzzy.  I can trivially add that though if it missing.
> >
> > Or just use a Flexviews materialized view:
> >
> > call flexviews.create_mvlog('schema', 'A');
> > call flexviews.create('schema','B', 'INCREMENTAL');
> > set @mvid := LAST_INSERT_ID();
> > call flexviews.add_expr(@mvid,'COLUMN','*','all_columns');
> > call flexviews.add_table(@mvid, 'schema', 'A', 'A',NULL);
> > call flexviews.enable(@mvid);
> >
> >
> > Or use mysqlbinlog + php/python/perl to extract statements for table A, and
> > rewrite the statements to table B, and apply them.  Use SBR for this,
> > because otherwise the complexity is same as FlexCDC and you should just use
> > materialized view.
> >
> > --Justin
> >
> >
> >
> > On Fri, Jul 3, 2015 at 3:23 PM, Stephane VAROQUI <[email protected]>
> > wrote:
> >>
> >> Flexview can probably help with  tables  denormalization that's mainly use
> >> to avoid joins on disks
> >>
> >> About writes
> >>
> >>
> >> To keep write performance you need to have table size of all inserted
> >> tables in memory ? so usage flexview for that help only if you have table A
> >> insert heavy purged but at the same time table B would need to have less
> >> indexes  and will still get same memory issues  and instead of doing single
> >> write you would need 2 writes A and B ?
> >> Partitioning have been created for this purpose so if you can find a
> >> partition key that will always insert into the same partition than you can
> >> maintain both tables in memory .
> >>
> >> About reads .
> >>
> >> 1 - if you can put all data in memory  you will be able to get 800K reads
> >> per sec . if your count , group by , etc parse more than 1M like 32 Million
> >> it will still do 50s  to get you a result .
> >>
> >> Need a lot of slaves (cores) to satisfy 100 qps /s. that possible we have
> >> clients or users having Kilo servers to satisfy such requirements
> >>  ( maxscale can help keeping those slaves in sync when you have so many)
> >>
> >> 2- If you wan't to reduce the amount of servers needed for big data
> >> computing or you can't offer to put all data in memory and also can't wait
> >> those 32 sec you can use a column based storage, those tools are dedicated
> >> for processing multi millions data reads /s  at the price of asynchronous
> >> ETL loading
> >> You can try out InfiniDB.  documentation and binaries can be found from
> >> the MariaDB Portal
> >>
> >> 3 - Now if you think that you don't really need to read so many records
> >> like around a Million but that you can't afford to get memory , it's
> >> interesting to use TokuDB as it will parse less record per second in memory
> >> vs innodb butwill use a lot lot less disks io compare to innodb or myisam.
> >> With heavy compression and fractal tree it is a drastic io reduction.
> >>
> >> 4- Other solution to keep memory low is using a good flash storage like
> >> fusion IO , it can produce 128K reads IO per sec using1/5 in memory  that
> >> would give you still the million parse in less than few seconds.
> >>
> >> 5 - If you have access to many nodes to compute the same request , you can
> >> think spider that can split every partition into a separate server . You
> >> will end up having data back in memory and spider can help you consolidate
> >> all results performed on each server , with 32 nodes you can probably get
> >> job done on all nodes adding the time to consolidate. This would be 
> >> possible
> >> on basic query plan like group and sum of a single table . but it become
> >> more interesting if you need a million record count that end up into a
> >> single partition  where data stay in the memory on the destination server .
> >>
> >> Hope it helps
> >>
> >> Stephane.
> >>
> >>
> >> Stéphane Varoqui, Senior Consultant
> >>
> >> Phone: +33 695-926-401, skype: svaroqui
> >> http://www.mariadb.com
> >>
> >> Le Jul 3, 2015 à 11:40 PM, Roberto Spadim a écrit :
> >>
> >> the main table have 29M rows (39GB, servers are "small" and old
> >> (2008), 16GB ram, 8core dual-cpu xeon, raid 10 hd with 4 sata disks
> >> 250gb each, 4 1Gbps network card )
> >> 20+ process updating, deleting, inserting (oltp, 1000+ qps, i think it
> >> will not grow with time)
> >> 5+ process running olap with big selects/group/order/min/max/sum/count
> >> etc (some queries take more than 5 minutes to end, it's not a problem
> >> to user, but a problem when use oltp+olap apps at same table)
> >>
> >> today using replication to another server or mysqld process at same
> >> machine i don't have problem, olap and oltp runs nice with different
> >> mysqld process
> >> but when i try oltp + olap at same table at same mysqld, locks begin a
> >> problem, i was thinking about creating a replication at same server
> >> but to different table (replicate table a to table b)
> >>
> >>
> >>
> >> 2015-07-03 18:28 GMT-03:00 Stephane VAROQUI <[email protected]>:
> >>
> >> Hi,
> >>
> >>
> >> How many writes do you have ? How much do you plan ?
> >>
> >> When you read how many records and what is your business case  ?
> >>
> >>
> >> /stephane
> >>
> >>
> >> Stéphane Varoqui, Senior Consultant
> >>
> >>
> >> Phone: +33 695-926-401, skype: svaroqui
> >>
> >> http://www.mariadb.com
> >>
> >>
> >> Le Jul 3, 2015 à 11:23 PM, Roberto Spadim a écrit :
> >>
> >>
> >> i didn't tested but spider have HA/federate, maybe i could use it?
> >>
> >>
> >> 2015-07-03 18:00 GMT-03:00 Federico Razzoli <[email protected]>:
> >>
> >>
> >> I'm not sure. Flexviews should be a good solution.
> >>
> >>
> >>
> >> Or you can used triggers to "replicate" the table instantly.
> >>
> >>
> >>
> >> I don't understand your idea with SPIDER, how will it help you?
> >>
> >>
> >>
> >> Regards
> >>
> >>
> >> Federico
> >>
> >>
> >>
> >>
> >>
> >> --------------------------------------------
> >>
> >>
> >> Ven 3/7/15, Roberto Spadim <[email protected]> ha scritto:
> >>
> >>
> >>
> >> Oggetto: [Maria-discuss] doubt - replication at same mysqld process
> >>
> >>
> >> A: "Maria Discuss" <[email protected]>
> >>
> >>
> >> Data: Venerdì 3 luglio 2015, 22:23
> >>
> >>
> >>
> >> hi guys, i have a doubt about
> >>
> >>
> >> replciation on same machine, i never did
> >>
> >>
> >> this before
> >>
> >>
> >>
> >>
> >> i have a table running many writes and few reads, and
> >>
> >>
> >> another process
> >>
> >>
> >> start reading a lot, my today solution is replication on two
> >>
> >>
> >> servers
> >>
> >>
> >> (on same machine or other machine), the point is... could i
> >>
> >>
> >> replicate
> >>
> >>
> >> in same server (with only one server running / only one
> >>
> >>
> >> mysqld
> >>
> >>
> >> process) ?
> >>
> >>
> >>
> >> something like change table A, and a background process
> >>
> >>
> >> replicate to
> >>
> >>
> >> table B? "many writes" will write at table A, reads will
> >>
> >>
> >> read table B
> >>
> >>
> >> (read can be out of sync)
> >>
> >>
> >>
> >> innodb is locking a lot of rows, and myisam/aria is locking
> >>
> >>
> >> table a
> >>
> >>
> >> lot, both engines i have problem with lock, i consider
> >>
> >>
> >> replication to
> >>
> >>
> >> another mysqld process as the only solution, but i'm
> >>
> >>
> >> considering
> >>
> >>
> >> running only one mysqld process (if possible)
> >>
> >>
> >> i was thinking about something like HA in spider, but i
> >>
> >>
> >> didn't tested,
> >>
> >>
> >> maybe with flexviewcdc i could have a materialized view "B"
> >>
> >>
> >> of table
> >>
> >>
> >> A?
> >>
> >>
> >>
> >> any idea/help is wellcome
> >>
> >>
> >>
> >> --
> >>
> >>
> >> Roberto Spadim
> >>
> >>
> >>
> >> _______________________________________________
> >>
> >>
> >> Mailing list: https://launchpad.net/~maria-discuss
> >>
> >>
> >> Post to     : [email protected]
> >>
> >>
> >> Unsubscribe : https://launchpad.net/~maria-discuss
> >>
> >>
> >> More help   : https://help.launchpad.net/ListHelp
> >>
> >>
> >>
> >>
> >>
> >>
> >> --
> >>
> >> Roberto Spadim
> >>
> >> SPAEmpresarial - Software ERP
> >>
> >> Eng. Automação e Controle
> >>
> >>
> >> _______________________________________________
> >>
> >> Mailing list: https://launchpad.net/~maria-discuss
> >>
> >> Post to     : [email protected]
> >>
> >> Unsubscribe : https://launchpad.net/~maria-discuss
> >>
> >> More help   : https://help.launchpad.net/ListHelp
> >>
> >>
> >>
> >>
> >>
> >>
> >> --
> >> Roberto Spadim
> >> SPAEmpresarial - Software ERP
> >> Eng. Automação e Controle
> >>
> >>
> >>
> >> _______________________________________________
> >> Mailing list: https://launchpad.net/~maria-discuss
> >> Post to     : [email protected]
> >> Unsubscribe : https://launchpad.net/~maria-discuss
> >> More help   : https://help.launchpad.net/ListHelp
> >>
> >
> 
> 
> 
> --
> Roberto Spadim
> SPAEmpresarial - Software ERP
> Eng. Automação e Controle
> 

_______________________________________________
Mailing list: https://launchpad.net/~maria-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~maria-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to