3

Version: 10.4.8-MariaDB
engine: ROCKSDB

I have a table labor with 40 Mio rows and a table map with 200,000 rows and I wanted to update some columns of labor with. Since I got performance problems as the table increased I decided to migrate from InnoDB to ROCKSDB engine:

ALTER TABLE some.labor ENGINE=RocksDB;

When I wanted to partition:

ALTER TABLE some.labor PARTITION BY KEY() PARTITIONS 10;

I got this error:

SQL Fehler (1296): Got error 10 'Operation aborted: Failed to acquire lock due to rocksdb_max_row_locks limit' from ROCKSDB

I found this solution in SO:

SET session rocksdb_bulk_load=1;

After I changed the status the table could be partioned.

After that I wanted to do an update:

UPDATE some.labor r
INNER JOIN some.map m
ON     r.analysis_1   <=> m.analysis_1
   AND r.analysis_2   <=> m.analysis_2 
   AND r.unit         <=> m.unit
   AND r.praxis_id    <=> m.praxis_id         
SET   r.analysis    = m.analysis_new
    , r.unit        = m.unit_new
;

<=> is needed since some fields contains NULL. All 4 join variables are indexed.

I got the same error as before

SQL Fehler (1296): Got error 10 'Operation aborted: Failed to acquire lock due to rocksdb_max_row_locks limit' from ROCKSDB

although the status remained

SET session rocksdb_bulk_load=1;

Any idea how I can cope with this?

giordano
  • 2,954
  • 7
  • 35
  • 57

0 Answers0