Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
erp5 erp5
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Labels
    • Labels
  • Merge requests 136
    • Merge requests 136
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Environments
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Jobs
  • Commits
Collapse sidebar
  • nexedi
  • erp5erp5
  • Merge requests
  • !1844

Closed
Created Nov 15, 2023 by Kazuhiko Shiozaki@kazuhikoOwner
  • Report abuse
Report abuse

WIP: Introducing READ-COMMITTED isolation connector

  • Overview 8
  • Commits 30
  • Changes 150

This branch is for MariaDB >= 10.5 that does no longer have innodb_locks_unsafe_for_binlog.

To achieve a good performance in parallel processing, this branch uses following connections.

  • cmf_activity_sql_connection: READ-COMMITTED isolation
  • erp5_sql_connection: REPEATABLE-READ isolation
  • erp5_sql_read_committed_connection: [NEW] READ-COMMITTED isolation
  • erp5_sql_transactionless_connection: not using transaction

Basically, new erp5_sql_read_committed_connection is used for INSERT/DELETE/REPLACE operation. For certain cases for which we are sure that READ-COMMITTED isolation is fine, we can use it for SELECT operation as well, for example alarm table.

Also for certain cases for which we don't join with other tables, using the default erp5_sql_connection connection for everything is easier, for example syncml table.

Note that both READ-COMMITTED transaction and REPEATABLE-READ transaction start right after the Zope transaction starts, and READ-COMMITTED transaction's result cannot be fetched by REPEATABLE-READ transaction. Some unit tests failed by this reason and simply calling self.commit() will re-starts both MariaDB transactions.

Edited Oct 04, 2024 by Kazuhiko Shiozaki
Assignee
Assign to
Reviewer
Request review from
None
Milestone
None
Assign milestone
Time tracking
Source branch: feat/mariadb-10.11
GitLab Nexedi Edition | About GitLab | About Nexedi | 沪ICP备2021021310号-2 | 沪ICP备2021021310号-7