Skip to main content



Recommends best practices and optimizes the cluster for maximum performance.

This command makes or recommends the following best practices:

  • By default, if --memory-percentage is not specified, sets maximum_memory to either 90% of the total RAM available to a leaf node, or to the total RAM available to the leaf node minus 10GB, whichever is greater.

  • If --memory-percentage is specified, sets maximum_memory to that percentage of the total RAM available to a leaf node.

  • If there are multiple leaf nodes on the same host, the memory allocation will be divided evenly among the leaf nodes.

  • Queries for the NUMA node count on the host. If numactl is installed on the host, optimize will set up NUMA binding based on the number of NUMA nodes on the host and the number of leaf nodes created.

  • Recommends that you install new leaf nodes if the number of leaf nodes is less than what is recommended by the NUMA configuration.


  memsqlctl optimize [flags]

  -h, --help                    Help for optimize
      --memory-percentage INT   The percentage of memory to use for the database on each host
      --no-numa                 Do not change NUMA settings on any nodes

Global Flags:
  -c, --config FILE_PATH                     Path to the memsqctl config file
      --default-install-dir DIRECTORY_PATH   Path to the default install directory
      --insecure-ssl                         Fall back to insecure SSL connections to local SingleStoreDB nodes if memsqlctl is unable to otherwise establish a connection (ADVANCED)
  -j, --json                                 Print output in JSON format
      --node-metadata-file FILE_PATH         Path to the node metadata file
      --parallelism POSITIVE_INTEGER         Maximum amount of operations to be run in parallel
      --ssl-ca FILE_PATH                     The path to the CA certificate file (in PEM format) to authenticate the database certificate
      --timeout duration                     Maximum time for operation to complete (e.g., 30s, 10m, 1.5h)
      --verbose-json                         Print output in JSON format, include some warnings and user messages
  -v, --verbosity count                      Increase logging verbosity
  -y, --yes                                  Enable non-interactive mode and assume the user would like to move forward with the proposed actions by default


  • This command is interactive unless you use either --yes or --json flag to override interactive behavior.

  • The memsqlctl optimize command is equivalent to the sdb-admin optimize command.


The following example shows how to use optimize to increase memory size on a leaf node to align with deployment best practices.

sudo memsqlctl optimize
Warning: The maximum memory per node, 7184 MB, is less than SingleStore's minimum recommendation of 7372 MB per node.
memsqlctl will perform the following actions:
  · On leaf node with MemSQL ID 7DE9330A9F374C580C9857C851CE3A8380DA2FFC on port 3307
    - Set maximum_memory to 7184 MB

Would you like to continue? [y/N]: y
✓ Updated MemSQL config file with setting 'maximum_memory = 7184' for node with MemSQL ID 7DE9330A9F374C580C9857C851CE3A8380DA2FFC
✓ Executed 'SET GLOBAL maximum_memory=7184' command on node with MemSQL ID 7DE9330A9F374C580C9857C851CE3A8380DA2FFC