Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Set innodb_io_capacity close to the sustained random-write IOPS your storage can deliver to InnoDB under a production-like workload—not to a vendor’s short burst or headline maximum. Keep the number as low as practical while preventing dirty pages, checkpoints, and other background work from falling behind. Set innodb_io_capacity_max at least as high as the base value; twice the base is a documented starting point when flushing cannot keep up.

Check the running server before changing anything. MySQL releases do not share one universal default: the MySQL 8.0 manual documents a default of 200, while the current 26.7 Reference Manual documents 10,000. Both manuals require a minimum value of 100. Run SELECT @@version, @@innodb_io_capacity, @@innodb_io_capacity_max;, measure your real storage path, apply a reversible runtime change, and then verify checkpoint age, dirty pages, write latency, and innodb_log_waits.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

What innodb_io_capacity controls

Oracle MySQL defines innodb_io_capacity as the overall I/O capacity available to InnoDB. The setting is a rate budget for background work such as flushing dirty buffer-pool pages, checkpoint activity, and insert-buffer (change-buffer) merges. It is not a promise that every foreground query will receive that many operations per second, nor is it a direct limit on all reads and writes generated by the server.

The intended value is approximately the number of I/O operations per second the system can perform for the InnoDB workload. The practical objective is a balance: a low enough rate to preserve cache usefulness and foreground latency, but high enough that background work does not accumulate until InnoDB must catch up in a burst.

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application:Upgraded attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Warranty & Support: Our Electric air duster comes with 5 years warranty and 24/7 customer service. During this period, if you have any questions,pls kindly feel free to contact us.

Base capacity versus emergency capacity

innodb_io_capacity is the normal background-flushing budget. innodb_io_capacity_max is the higher ceiling InnoDB can use when flushing falls behind. The maximum must not be lower than the base value. A starting rule documented by MySQL is to set the maximum to about twice the base when you are seeing a growing flush backlog, then validate that choice with measurements.

These variables do not replace a storage-sizing exercise. If the device, virtualized volume, RAID layer, filesystem, or cloud block service cannot sustain the required write pattern, increasing either variable only makes InnoDB compete harder for an already saturated path.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Check version, defaults, and current values first

Defaults and documentation differ by release, so never copy a value from an article written for another MySQL version. Inspect the active server and record the result before tuning:

SELECT @@version, @@innodb_io_capacity, @@innodb_io_capacity_max;
Reference Documented value or rule How to use it
Current MySQL 26.7 Reference Manual Default innodb_io_capacity: 10,000; minimum: 100 Use the running server’s value, not this default, as your starting point.
MySQL 8.0 Reference Manual Default innodb_io_capacity: 200 Older 8.0 installations may still be using this much lower default.
MySQL 8.0 example 100 for an individual 5400- or 7200-RPM disk This is an example for that media class, not a recommendation for SSDs, RAID, or network storage.
All supported versions Values of 100 or greater are allowed A value below 100 is invalid; the useful value still depends on measured workload capacity.

The 10,000 and 200 figures are release-specific defaults documented by Oracle MySQL, not measurements of your device. A server upgraded across releases can therefore change behavior simply because its default changed. Include the exact version in any tuning record.

Measure sustainable IOPS that represent your workload

Use a sustained test against the same storage path used by MySQL: the same device or volume, RAID or virtualisation layer, filesystem, mount options, and encryption path. A short synthetic peak can look impressive while the array’s cache, queue, or burst allowance is being consumed. That number is unsafe as the sole input for innodb_io_capacity.

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth

Match the important test characteristics

  • Access pattern: InnoDB background work is dominated by page writes and can behave differently from sequential throughput. Test random writes with a block size and alignment that resemble the database path.
  • Concurrency: Use queue depth or worker concurrency similar to production. A single-thread result and a heavily queued result describe different limits.
  • Read/write mix: Record reads as well as writes. Foreground reads and writes need headroom while background flushing runs.
  • Durability settings: Match the production durability and flush behavior. A benchmark that bypasses synchronous durability does not represent a durable InnoDB workload.
  • Duration: Run long enough to reach steady state rather than relying on a brief burst. Record latency throughout the run, not only average IOPS.
  • Competing services: Include backup, binlog, replication, monitoring, and other processes that share the storage path, or reserve capacity for them explicitly.

Record more than a single IOPS number

Capture sustained read IOPS, sustained write IOPS, operation latency (including high percentiles if your tool reports them), queue depth, and storage utilisation. Note whether the device throttles after a burst. The capacity available to InnoDB is the portion that remains after foreground traffic and other services are accounted for; it is not automatically the device’s total headline IOPS.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Translate the measurement into a starting value

Start with a budget rather than a claimed maximum:

  1. Determine the sustainable IOPS of the production-like test.
  2. Subtract the I/O that must remain available for foreground queries, redo and binlog writes, replication, backups, and operating-system activity.
  3. Use the remaining InnoDB background budget as the approximate starting point for innodb_io_capacity.
  4. Ensure the result is at least 100. If the calculated budget is lower, investigate workload or storage constraints instead of setting an invalid value.
  5. Set innodb_io_capacity_max no lower than the base. If checkpoint or dirty-page backlog grows, twice the base is a reasonable documented starting point for the ceiling.

There is no reliable universal percentage such as “set it to 50% of advertised IOPS.” Oracle’s guidance is intentionally approximate. The right number is the one that keeps background work current without causing unacceptable foreground latency or storage saturation under representative traffic.

Illustrative calculation

Suppose a production-like test shows a stable storage limit of 8,000 IOPS while normal foreground and auxiliary activity consumes about 2,000 IOPS. The initial InnoDB background budget would be near 6,000 IOPS, so you could test innodb_io_capacity = 6000 and innodb_io_capacity_max = 12000 as an experiment. Those figures are illustrative arithmetic, not a prediction for any particular device; your measured latency and backlog determine whether they are acceptable.

Apply a reversible runtime change

Change one variable at a time when possible, and make a note of the old values so rollback is immediate. You need privileges sufficient to set global system variables.

SET GLOBAL innodb_io_capacity = 6000;
SET GLOBAL innodb_io_capacity_max = 12000;

Use your measured starting values in place of the illustrative numbers. Confirm the server accepted them:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.
SELECT @@innodb_io_capacity, @@innodb_io_capacity_max;

A global change affects the running instance and is reversible, but it does not necessarily survive a restart. Test during a representative workload window rather than immediately after a quiet restart, because dirty-page and checkpoint behavior changes as the buffer pool fills.

Persist the values only after validation

After observing the runtime settings through normal traffic and at least one relevant checkpoint cycle, place them in the instance’s option file so they return after restart. Under the [mysqld] section of my.cnf (Unix-like systems) or my.ini (Windows), add:

[mysqld]
innodb_io_capacity=6000
innodb_io_capacity_max=12000

Use the values that survived testing, not the illustrative example. Restart in a maintenance window, then run the inspection query again. If configuration management generates the option file, change the source template rather than editing a generated copy.

Monitor whether the setting is doing its job

Evaluate a candidate setting against both database health and user-visible performance. Compare a baseline period with the same workload after the change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Signal What it tells you Desired direction
Dirty-page percentage Whether modified pages are accumulating in the buffer pool Stable or falling during sustained writes; a persistent rise indicates flushing is behind.
Checkpoint age How far redo generation is ahead of the last checkpoint Remain comfortably below the limit instead of repeatedly approaching it.
History-list length Whether purge and related background work are keeping up with transaction history No unexplained, sustained growth attributable to write pressure.
Insert-buffer merge activity Whether change-buffer work is accumulating Steady progress rather than a growing deferred-merge backlog.
Periodic throughput dips Whether checkpoint flushing is forcing foreground work to pause Fewer or smaller dips after an appropriate capacity increase.
innodb_log_waits Whether transactions had to wait for redo space No new or rising waits during the tested workload.
Storage latency and utilisation Whether the setting is consuming the device’s practical headroom Remain within the latency target for foreground traffic.

MySQL’s guidance is to increase capacity when checkpoint flushing causes periodic throughput drops, and to lower it when flushing is not falling behind. Treat these as observations to test, not as permission to ignore latency: a higher rate that removes backlog but makes every foreground request slower may be a net regression.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Why flushing can still happen in bursts

innodb_flush_sync can override the normal rate

innodb_flush_sync is enabled by default. During a checkpoint burst, it can cause InnoDB to flush at a rate that ignores the configured innodb_io_capacity. This behavior is why a server can show short periods of I/O above the base setting even when the variable is correctly configured.

Disable innodb_flush_sync only when strict adherence to the configured rates is required and you have evaluated the consequences. Removing the burst mechanism can make the rate look smoother while allowing checkpoint age or dirty pages to grow farther, so compare checkpoint health, latency, and recovery behavior before and after any change.

Emergency flushing is a safety response

If flushing falls behind, InnoDB can flush more aggressively than the base innodb_io_capacity, up to the higher rate allowed by innodb_io_capacity_max and other internal limits. Bursts therefore indicate a backlog or checkpoint-pressure condition, not necessarily that MySQL ignored your configuration. Look at dirty pages, checkpoint age, and throughput dips at the time of the burst.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a response based on the observed symptom

Observed symptom Likely interpretation Action to test
Dirty pages and checkpoint age rise continuously Background flushing cannot match the workload Raise the base gradually, verify storage latency, and ensure the maximum is at least the new base.
Regular throughput dips coincide with checkpoint activity Flushing is being forced in periodic bursts Increase capacity in a controlled step and compare checkpoint age and foreground latency.
Storage latency rises while backlog is already controlled The base rate is consuming headroom needed by foreground work Lower the base until latency recovers without allowing backlog to grow.
Short spikes exceed the configured base innodb_flush_sync or emergency flushing is active Correlate spikes with checkpoint age and dirty pages before changing the variable.
innodb_log_waits increases Redo space is unavailable quickly enough for transactions Check checkpoint progress and write latency; adjust capacity only after confirming flushing is the bottleneck.
Changing the value has little effect The workload may be limited elsewhere, or the change may not be persistent after restart Recheck active variables, storage saturation, redo generation, and option-file configuration.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Common mistakes and safer alternatives

Copying a value from another server

Two systems both described as “SSD” can have very different endurance, queue behavior, filesystem paths, and shared workloads. Use another server’s value only as a hypothesis, then measure your own path.

Using vendor peak IOPS

Peak specifications may describe a short, highly queued test under conditions unlike a durable database workload. Sustained, production-like results with latency are the relevant evidence for this variable.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Setting the maximum below the base

That reverses the intended relationship and can prevent InnoDB from entering a higher catch-up rate. Keep innodb_io_capacity_max at least equal to innodb_io_capacity.

Changing both values and several durability settings together

Multiple simultaneous changes make cause and effect difficult to establish. Change capacity first, observe, and document each subsequent adjustment.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Ignoring restart behavior

A successful SET GLOBAL proves only that the current instance changed. Verify the option file and inspect the variables after restart so an unnoticed reversion does not recreate the backlog.

Treating a smooth I/O graph as proof of health

Smoothing can hide a growing checkpoint age or dirty-page pool. Always pair device graphs with InnoDB status metrics and foreground latency.

A repeatable tuning procedure

  1. Inventory the instance: Record MySQL version, current capacity values, storage layout, durability settings, buffer-pool size, and services sharing the volume.
  2. Measure: Run a sustained random-write test through the same path, matching block characteristics, concurrency, read/write mix, and durability. Record latency and throttling.
  3. Reserve headroom: Account for foreground queries, redo, binlog, replication, backups, and the operating system. Convert the remainder into an approximate InnoDB background budget.
  4. Set a candidate: Choose a base no lower than 100 and set the maximum no lower than the base. If backlog exists, begin with a maximum around twice the base.
  5. Apply at runtime: Use SET GLOBAL, verify the values, and keep the previous settings for rollback.
  6. Exercise real traffic: Observe dirty pages, checkpoint age, history-list length, insert-buffer merges, throughput dips, innodb_log_waits, and storage latency.
  7. Adjust one direction at a time: Raise the base when flushing falls behind; lower it when backlog is controlled but foreground latency or storage saturation is excessive.
  8. Persist and recheck: Write the validated values to my.cnf or my.ini, restart under controlled conditions, and confirm the running values.

Rollback and change control

If foreground latency or storage saturation worsens, restore the previous runtime value immediately:

SET GLOBAL innodb_io_capacity = <previous_base>;
SET GLOBAL innodb_io_capacity_max = <previous_max>;

Then remove or correct the persisted entries before the next restart. Keep a change record containing the version, measured sustained IOPS, workload conditions, old and new values, and the observed effects on checkpoint age, dirty pages, throughput, and innodb_log_waits. This makes later capacity changes comparable instead of guesswork.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Practical decision rule

Use the lowest tested innodb_io_capacity that keeps dirty pages and checkpoint age under control through the heaviest representative write periods, while preserving acceptable foreground latency. Let innodb_io_capacity_max provide controlled catch-up room rather than using an oversized base to chase every transient spike. If bursts continue, investigate checkpoint pressure and the default synchronous-flush behavior before assuming the base value is wrong.

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.