Fix the "insufficient shared memory" error
If you run AlloyDB Omni without enough shared memory for the columnar engine, then you might see the following error:
Insufficient shared memory for generating the columnar formats.
To address this issue, specify the amount of shared memory that's available to the AlloyDB Omni container.
Linux
-
Make sure that you already installed AlloyDB Omni with your
/dev/shm
directory mounted on the container. For more information, see Customize your AlloyDB Omni installation . -
Increase the size of your host machine's
/dev/shm
partition by using a technique such as editing your/etc/fstab
file.
macOS
Install a new AlloyDB Omni container, and specify a larger shared-memory value for the --shm-size
flag
.
Find the tables that are populated in the columnar engine
In the g_columnar_relations
view, create queries to find the tables that are
present in the columnar engine.
SELECT
*
FROM
g_columnar_relations
;
Find the overall memory that the columnar engine uses
Use the google_columnar_engine_memory_available()
SQL function to determine
the amount of memory that the columnar engine uses.
SELECT
google_columnar_engine_memory_available
();
Determine if specific columns aren't populated in the columnar engine
Try the following possible solutions:
- Check whether the columnar engine supports the column's data type.
- If you recently added or dropped columns to the base table, verify that you performed the same operation in the columnar engine.
Verify if a query uses the columnar engine
In the query plan, verify if there's a "Custom Scan (columnar scan)" planner node.
Find the maintenance jobs in progress
Query in the g_columnar_jobs
view to find the jobs in progress.
SELECT
*
FROM
g_columnar_jobs
;
Set the amount of resources that maintenance activities use in the columnar engine
By default, the columnar engine uses up to 20% of the database resources. To
increase or decrease this usage, adjust the google_columnar_engine.maintenance_cpu_percentage
(GUC) setting. For more information,
see Adjust the CPU resources for maintenance tasks
.