![]() | |
![]() |
| | Thread Tools | Display Modes |
#11
| |||
| |||
|
|
Lennart, right now, I am looking at Postgres closely. It appears to be somewhat more robust. However, I have some MySQL experience and no Postgres experience, and I am not yes convinced that Postgres is much superior to MySQL in that regard. |
|
Regarding the problem that started this thread, for example, the proper behavior of a well designed database engine, would be to use another locking technique instead of failing everything in a manner that is hard to recover. |
#12
| |||
| |||
|
|
On 2011-09-19 21:36, Ignoramus15208 wrote: [...] Lennart, right now, I am looking at Postgres closely. It appears to be somewhat more robust. However, I have some MySQL experience and no Postgres experience, and I am not yes convinced that Postgres is much superior to MySQL in that regard. What I had in mind was alternative engines for mysql, but it probably wont hurt to look at other dbms as well. However, I just saw your answer to Boris question, and I'm pretty convinced that innodb will handle that amount of rows fairly well. I jumped to conclusions about the amount of rows that where about to be loaded. |
|
[...] Regarding the problem that started this thread, for example, the proper behavior of a well designed database engine, would be to use another locking technique instead of failing everything in a manner that is hard to recover. Why is it hard to recover from the error, can't you just rollback the transaction and handle it from there? |
#13
| |||
| |||
|
|
On 2011-09-19 19:06, Ignoramus15208 wrote: The lock table in InnoDB is stored so space-efficiently that lock escalation is not needed: Typically, several users are permitted to lock every row in InnoDB tables, or any random subset of the rows, without causing InnoDB memory exhaustion. Well, I guess I am not typical. ![]() |
|
the statement above makes me wonder whether innodb is the best choice for a DW. |
|
I googled for "mysql datawarehouse engine" and it appears to be a couple of engines that claims to be better than innodb for DW. |
#14
| |||
| |||
|
|
I made changes, so that I do a COMMIT once in a while, roughly once every 100,000 rows or so. I split the work into chunks and process one chunk at a time, first populating another identical table, and them doing INSERT SELECT. This is going to be my modus operandi, as I want to be able to use the master table most of the time. This allows me to lock it for populating only once per day or per week, instead of badgering it with INSERTs all the time. |
|
I googled for "mysql datawarehouse engine" and it appears to be a couple of engines that claims to be better than innodb for DW. Told you so. What engine would you suggest. though? |
#15
| |||
| |||
|
|
Hi $UNKNOWN, Ignoramus19458 <ignoramus19458 (AT) NOSPAM (DOT) 19458.invalid> wrote: I made changes, so that I do a COMMIT once in a while, roughly once every 100,000 rows or so. I split the work into chunks and process one chunk at a time, first populating another identical table, and them doing INSERT SELECT. This is going to be my modus operandi, as I want to be able to use the master table most of the time. This allows me to lock it for populating only once per day or per week, instead of badgering it with INSERTs all the time. Why do you believe INSERT ... SELECT being faster than INSERT alone? Especially if you use an optimized INSERT operation: |
|
- LOAD DATA INFILE -or- - prepared INSERT statement -or- - multi-row INSERT syntax I can think of only one scenario where this would make sense: if your data arrives in random order and you can do INSERT ... SELECT in PK order. I googled for "mysql datawarehouse engine" and it appears to be a couple of engines that claims to be better than innodb for DW. Told you so. What engine would you suggest. though? p7toj8-9ps.ln1 (AT) xl (DOT) homelinux.org |
#16
| |||
| |||
|
|
I am doing a lot of INSERTs in parallel (populating a data warehouse). |
![]() |
| Thread Tools | |
| Display Modes | |
| |