So think that out. Write an ACID Transaction (no I am not being
silly, I realise you canrCOt on your non-SQL platform, so you have to
think in SQL terms, for an SQL platform). A stored proc, that:
- navigates the *levels* of the Tree,
- and loops,
- executing max 100 INSERTs per BEGIN::COMMIT for the new Key,
- then executing max 100 DELETEs per BEGIN::COMMIT for the old Key.
On Tuesday, 15 June 2021 at 08:08:25 UTC+10, Derek Ignatius Asirvadem wrote:A Caveat that is really important. In my years of dealing with developers who are used to the Stonebraker/MVCC mindset, it is clear that they do not grasp ACID. They are so used to the Oracle/PusGres *redefinition* of ACID (fraud), to fit their MVCC mindset, for the purpose of making their MVCC somewhat palatable, that they cannot grasp that they do not know ACID. That state of ignorance allows them to argue that MVCC is comparable to rCLACIDrCY. MVCC is not comparable to ACID, it is the polar opposite.
On Tuesday, 15 June 2021 at 03:39:09 UTC+10, Nicola wrote:
On 2021-06-14, Derek Ignatius Asirvadem wrote:
So think that out. Write an ACID Transaction (no I am not being
silly, I realise you canrCOt on your non-SQL platform, so you have to think in SQL terms, for an SQL platform).
Sorry, no, it is a Batch Transaction with no regard to ACID.Write an ACID Transaction
Whereas T1; T2 are ACID Transactions, and State means database state; Consistency per all Constraints, ie. Logically Atomic, B1: B2 are physical chunks (delimited by an arbitrary number), in a physical *move* operation. It is harmless ACID-wise because the OldKey tree is ACID-compliant, and we are not affecting that in any way, we are faithfully carrying that over into the NewKey tree.A stored proc, that:
- navigates the *levels* of the Tree,
- and loops,
- executing max 100 INSERTs per BEGIN::COMMIT for the new Key,
Let me call this T1...
- then executing max 100 DELETEs per BEGIN::COMMIT for the old Key.
...and this T2.
We can call it T1; T2, but we donrCOt want to confuse that with a normal ACID Transaction T1; T2, because it is not, it is a Batch Transaction. Whereas in ACID, we are dealing with {Add|Drop|Mod} a logical Atom of data (RM-compliant db = coincident with Logical Atom; non-compliant db = does not have Logical Atom), here we are moving an entire tree, of many levels, therefore State in the ACID sense will not apply.
We may be better off calling it B1; B2.
On Monday, 14 June 2021 at 14:35:13 UTC+10, Derek Ignatius Asirvadem wrote:There are quite a few.
On Monday, 14 June 2021 at 01:13:54 UTC+10, Nicola wrote:
I'd like to do some benchmarks.
Great idea. Excellent ...
*Benchmark* strongly implies an ability to monitor the server, all metrics that pertain to performance (in general), and the particular metrics that pertain to the particular benchmark. Freeware has no such thing, so you will be working in the dark, with little idea re what is happening under the covers.
For contrast, take a glimpse of what is available in commercial SQLs.
0. Monitoring products
Additional licence fee, not shown. Feel free to search the internet.
1. Raw Stats: text, various forms. Free.Generally two types:
Voluminous, not shown. Can be ascertained from the following [which are summaries].
2. Raw Stats Formatted, especially for various types of comparison.I have given mine for comparison. Do you have a link or reference for monitoring PusGres ?
__ https://www.softwaregems.com.au/Documents/Article/Sysmon%20Processor/Sysmon%20Processor%20Eg%20Date%20Delta.pdf
rCLDltrCY is the delta, between that column-of-stats and the first column-of-stats, as a percentage, with {-|+|x}.For a quick overview, just scan that column: existence of a double-digit value means the metric is worth examination; positive/negative is good/bad thing, depending on the metric of course.
For freeware & Oracle, due to not having a Server Architecture, and instead deploying hundreds or thousands of programs running on Unix, the first avenue of rCLperformance monitoringrCY and even rCLproblem diagnosisrCY, is via Unix monitoring:rCLHost SystemrCY
-- top
-- vmstat
rCLEnginerCY is a single Unix Process. The Sybase ASE server comprises a grand total of FOUR Engines in this instance, and serves hundreds of active connections (doctors; nurses; medical images; client histories; etc). In contrast, freeware and Oracle would have hundreds of Unix Processes and no concept of Engine.For those who labour over performance tuning of Oracle or PusGres, because it lacks a genuine Architecture diagram, here it is. Please donrCOt say that I only help the top end, that I donrCOt help the bottom-feeders. They are identical, just substitute the Oracle component names with the PusGres equivalents:
Nicola
On Tuesday, 15 June 2021 at 03:39:09 UTC+10, Nicola wrote:The State that is relevant is the State of the whole tree, either the
whole tree is in the OldKey xor the whole tree is in the NewKey.
If you have implemented *Optimistic Locking*
Suppose that, for some reason, one needs to update one HotelChain,
changing the value of HotelChain from ABC to H-ABC. If I understand
correctly, you would start by (optimistically) locking the record with
HotelChain = ABC.
Yes.
And leave it locked for the duration, it will be the last deleted.
(optimistically)
Because I know that you guys do not understand Locking, let alone
Optimistic Locking, note this this is not an act within that [generic, theoretical] framework. This is a data-level lock (if you have row
locking, and a row locking command, you do not have ACID *and* you
have broken a cardinal rule of OLTP).
| Sysop: | Amessyroom |
|---|---|
| Location: | Fayetteville, NC |
| Users: | 65 |
| Nodes: | 6 (0 / 6) |
| Uptime: | 03:53:51 |
| Calls: | 862 |
| Files: | 1,311 |
| D/L today: |
746 files (8,168M bytes) |
| Messages: | 264,528 |