MySQL does not have a hard 1 GB minimum. Oracle says its default configuration is designed to let a server start with approximately 512 MB of RAM, but starting is not the same as running reliably under traffic. A 1 GB VPS is a practical floor because the operating system, MySQL’s global and per-connection buffers, InnoDB’s cache, and any web application all share the same memory budget.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
1 GB is a practical floor, not a MySQL requirement
Oracle’s current MySQL 26.7 Reference Manual states: “The default configuration is designed to permit a MySQL server to start on a virtual machine that has approximately 512MB of RAM.” You can read the memory discussion in the MySQL memory-use documentation. That figure describes a startup baseline with conservative defaults. It does not promise that a 512 MB VPS will remain responsive when queries run concurrently, connections increase, or a web server runs beside MySQL.
As an Amazon Associate I earn from qualifying purchases.
Recommended Free Tools
The useful distinction is between boot capacity and operating headroom. A database may start, accept a test connection, and even serve a tiny site on 512 MB. Once the kernel, filesystem cache, SSH, monitoring, application runtime, and query work need memory at the same time, the same server can begin swapping or be terminated by the provider’s out-of-memory monitor. The 1 GB recommendation is therefore an engineering margin for a small, low-traffic deployment rather than an official minimum.
Where the VPS memory goes
MySQL’s footprint is not one fixed number. It is the sum of memory reserved globally, memory allocated by InnoDB, memory that can be created for each client thread, and memory consumed by the operating system and neighboring services.
#1 Best Overall
- Compatible with select DDR4 Laptop, Notebook computers + Easy to install at home, no expertise required
- Maximize your system's performance, boost loading speeds and multitask with ease
- Backed by A-Tech's Lifetime Warranty + Friendly tech support team available to help before and after your purchase
- Single 8GB RAM Module | DDR4 SO-DIMM 260-Pin | Speeds up to 2400MHz, PC4-19200 / PC4-2400T
- NON-ECC Unbuffered | 1Rx8 or 2Rx8 - Single or Dual Rank | JEDEC DDR4 standard 1.2V
Operating system and co-located services
Linux needs RAM for the kernel, process management, networking, filesystem metadata, and page cache. You may also need room for an SSH daemon, a web server, PHP or another application runtime, scheduled jobs, log collection, and monitoring. On a VPS, the provider can enforce a hard cgroup limit; crossing it can kill mysqld even when the host appears to have free memory elsewhere.
Global MySQL allocations
MySQL allocates structures shared by all sessions, including InnoDB metadata and caches, the table-definition cache, and other engine or server buffers. The exact total depends on the version, enabled plugins, storage engines, and configuration. Treat these allocations as a fixed reservation before you decide how many connections to permit.
InnoDB’s buffer pool
The InnoDB buffer pool caches table and index pages, reducing storage reads and usually providing the largest tunable allocation. Oracle’s guidance describes 50–75% of system memory as a typical range for the pool; the range is discussed in the 26.7 memory-use reference. On a 1 GB machine, that leaves only about 250–500 MB for the operating system and every other MySQL allocation when the pool is set in that range.
Rank #2
- A-Tech 8GB RAM Module, DDR4 SO-DIMM 260-Pin, 2666MHz / 2667MHz PC4-21300 (PC4-2666V)
- Non-ECC Unbuffered, JEDEC DDR4 Standard 1.2V Operating Voltage
- Compatible with select DDR4 SODIMM capable Laptop, Notebook, Mini PC, and All-in-One (AIO) computer systems. Please verify your system's memory type, form factor, and maximum supported capacity before purchasing
- Not compatible with desktop (DIMM), DDR2, DDR3, DDR5, ECC Registered (RDIMM), ECC Load Reduced (LRDIMM), or ECC Unbuffered (ECC UDIMM) memory types
- Increases available memory capacity to enhance system responsiveness, application performance, and multitasking capabilities.
The default innodb_buffer_pool_size in MySQL 8.0 is 128 MB, and InnoDB reserves additional memory outside the configured pool. The startup and option details are documented in InnoDB startup configuration and InnoDB startup options and system variables. A 128 MB default can let a small instance start, but it may hold only a fraction of a growing working set and cause more disk I/O.
Per-connection and per-thread memory
Some buffers are allocated for each active thread rather than once for the server. Sort, read, join, and binlog caches can grow while work is running. max_connections is therefore a potential peak-memory multiplier, not a block of RAM that is harmless simply because no client is connected yet. Oracle’s documented memory example includes the buffer pool, key_buffer_size, max_connections, per-thread buffers, and approximately 2 MB of thread stack per connection; see How MySQL Uses Memory.
A useful planning model is:
peak memory ≈ operating-system reserve + global MySQL memory + innodb_buffer_pool_size + (active connections × per-thread allocations)
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minuteRank #3
- Improve your system's responsiveness, run apps faster and multitask with ease
- Install with ease; no computer skills required How-to guides available at Crucial
- Compatibility assurance when using the Crucial System Scanner or Crucial Advisor Tool
- Micron quality and reliability is backed by superior component and module level testing and 42 years of memory expertise
- ECC Type = Non-ECC, Form Factor = UDIMM, Pin Count = 288-pin, PC Speed = PC4-21300, Voltage = 12V, Rank and Configuration = 1Rx16, 1Rx8 or 2Rx8
This is an estimate, not a billing formula. Per-thread allocations vary by query and can be much lower than their configured maxima during idle periods, then spike when many sorts or reads occur concurrently.
What different VPS sizes can realistically support
| VPS memory | What it can support | Main constraint | Practical guidance |
|---|---|---|---|
| 512 MB | MySQL can start with the documented default configuration; a very small database and light test traffic may work. | Almost no room remains for an application, connection bursts, or cache growth. | Use only for development, a low-traffic single-purpose service, or a tightly controlled experiment. Monitor for swapping and out-of-memory kills. |
| 1 GB | A small production site with a modest InnoDB working set and conservative connection limits. | The OS, web stack, and per-thread buffers compete with the buffer pool; bursts can exhaust the remainder. | Keep services lean, cap concurrency, and measure real usage before increasing the pool. |
| 2 GB | More comfortable separation between MySQL and a small web application, with room for a larger working set. | High traffic, large caches, or several application services can still consume the margin. | A sensible starting tier when the database is not the only major process. |
| 4 GB or more | Greater headroom for concurrent queries, application workers, monitoring, and a larger dataset. | Bad connection limits or an oversized pool can still cause pressure. | Choose based on measured working-set size and concurrency, not RAM alone. |
Compare plans using total RAM after the operating system and web stack, expected concurrent connections, database working-set size, swap policy, storage latency, and whether MySQL is the only substantial service. A 1 GB plan can be adequate for a low-traffic site whose hot data fits comfortably in memory. A control panel, mail service, application cache, or rapidly growing dataset usually makes 2 GB or more the safer choice. If the database is repeatedly swapping or the provider records out-of-memory events, upgrading to a VPS with more RAM is more reliable than repeatedly trimming caches.
How to size innodb_buffer_pool_size on a 1 GB VPS
Do not copy a percentage without first reserving memory for everything else. The following process keeps the pool large enough to cache useful data while protecting the host from sudden pressure.
Rank #4
- Compatible with select DDR4 Desktop computers + Easy to install at home, no expertise required
- Maximize your system's performance, boost loading speeds and multitask with ease
- Backed by A-Tech's Lifetime Warranty + Friendly tech support team available to help before and after your purchase
- Single 8GB RAM Module | DDR4 DIMM 288-Pin | Speeds up to 2133MHz, PC4-17000 / PC4-2133P
- NON-ECC Unbuffered | 1Rx8 or 2Rx8 - Single or Dual Rank | JEDEC DDR4 standard 1.2V
- Inventory the machine. Check the VPS limit with
free -hand inspect active services. Record whether a web server, language runtime, control panel, mail daemon, backup agent, or monitoring stack shares the host. - Reserve the operating system and services. Set aside a safety margin for the kernel, filesystem cache, SSH, logs, and normal application peaks. On a 1 GB server, the amount available to MySQL may be far below the headline number.
- Measure the database working set. Identify the size of frequently accessed tables and indexes, not just the total data directory. A pool larger than the hot working set may provide little benefit while reducing headroom for connections.
- Choose a conservative initial pool. The 128 MB MySQL 8.0 default is a safe starting point for bootstrapping, but many small production instances can increase it after measuring free memory. Keep enough room for global allocations and connection bursts rather than targeting the largest possible percentage.
- Set the value in the server configuration. In the
[mysqld]section, add a value such asinnodb_buffer_pool_size=256Mor another size justified by your measured reserve. The exact file path differs by distribution; use the configuration file included by your service manager. - Apply and verify. Restart during a maintenance window when a restart is required, then run
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';. Confirm the reported byte value and check system memory after the pool has warmed. - Increase gradually only when stable. Raise the pool in steps while watching resident memory, swap activity, query latency, and provider alerts. A smaller pool that stays resident is safer than a larger pool that forces paging.
On installations configured as a dedicated MySQL server, MySQL 8.0 has an automatic calculation that uses 50% of detected memory for servers in the 1–4 GB range. The conditions and behavior are specified in Automatic InnoDB Configuration for a Dedicated MySQL Server. Do not assume that setting applies when MySQL shares a VPS with an application; in that case, reserve memory for the other services yourself.
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Why max_connections matters more than the database size
A tiny database can still exhaust a 1 GB VPS if it allows too many simultaneous sessions. Each active connection can require thread-stack space and temporary buffers. A high max_connections value advertises a possible peak that the machine may not be able to fund.
Set a limit from observed concurrency
Look at the highest number of simultaneous sessions your application actually uses, then add a modest margin. Do not multiply a provider’s theoretical request rate by max_connections; many requests share pooled connections or wait in the application tier. Lowering an unnecessarily high limit protects the host, although it can make clients receive “Too many connections” during a genuine surge. The remedy is to tune the application pool, queue work, or add capacity rather than blindly raising the limit.
Best Value
- Disclaimer: Maximum Speed requires overclocking/PC BIOS adjustments. Maximum speed and performance depend on system components, including motherboard and CPU
- Hand-sorted memory chips ensure high performance with generous overclocking headroom
- VENGEANCE LPX is optimized for wide compatibility with the latest Intel and AMD DDR4 motherboards
- A low-profile height of just 34mm ensures that VENGEANCE LPX even fits in most small-form-factor builds
- A solid aluminum heatspreader efficiently dissipates heat from each module so that they consistently run at high clock speeds
Keep per-thread buffers conservative
Large sort, read, join, or binlog cache settings can multiply the cost of concurrency. Increase them only for a measured query pattern and test under simultaneous load. A setting that improves one reporting query can make an unrelated traffic spike fatal on a small VPS.
Detecting memory pressure before MySQL fails
Check memory during normal activity and during the busiest period you can reproduce. Useful indicators include:
- Swap-in and swap-out activity: sustained swapping means the working set no longer fits in RAM; latency often rises before an outright crash.
- Kernel or provider OOM messages: inspect system logs and the VPS control panel for process-kill events.
- Low available memory:
free -hreports available memory, whileswapon --showshows whether swap exists and how much is being used. - Connection spikes: compare application concurrency with MySQL’s status values and configured
max_connections. - Storage latency: a rising I/O wait percentage can indicate that an undersized pool is forcing reads from slow virtual storage.
If mysqld is killed, first stop nonessential services and reduce connection concurrency or per-thread buffers. If swapping persists, lower the pool enough to restore a resident workload, then move the database to a larger VPS. Adding swap can provide a small emergency cushion, but it is not a substitute for RAM: database pages moved to virtual storage are orders of magnitude slower than resident memory.
When 512 MB is acceptable
A 512 MB VPS is defensible when MySQL is the only significant service, traffic is predictable and light, the working set is small, and you accept strict connection limits and close monitoring. It is also useful for development, staging, or a temporary migration where performance is not a production requirement. Keep the default configuration conservative, avoid large per-thread buffers, and test the exact workload you expect.
It becomes a poor choice when the same machine hosts a web application, background workers, a control panel, mail, a cache, or monitoring agents; when concurrent sessions are bursty; or when indexes and hot rows no longer fit in the available cache. In those cases, the database may still start, but the system has no dependable operating margin.
A practical decision rule
- Choose 512 MB only when startup capacity is the goal and the workload is small, isolated, and closely observed.
- Choose 1 GB for a low-traffic production site with conservative connections and a measured, modest working set.
- Choose 2 GB or more when MySQL shares the VPS with an application stack, when traffic has bursts, or when swapping appears during ordinary peaks.
- Choose the next tier when your measured resident memory, not just your data-directory size, leaves no safety margin after accounting for the OS and co-located services.
The number on a VPS plan is only the starting point. Reliable sizing comes from the memory left after the operating system and other services, the number of concurrent queries, and the amount of data that must remain hot in InnoDB. That is why 1 GB is commonly recommended even though MySQL can technically start with approximately 512 MB.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

