On-demand capacity mode charges you only for the read and write requests your application makes. Provisioned capacity mode requires you to specify the number of reads and writes you expect, and you pay for that capacity whether you use it or not.
When you switch to on-demand mode, the table no longer uses provisioned capacity units. Instead, it bills based on actual read/write requests.
On-demand mode automatically handles traffic spikes by charging per request, avoiding throttling without needing capacity planning.
Provisioned capacity does not instantly scale for spikes, so temporary traffic bursts above provisioned units cause throttling.
GSIs follow the capacity mode of their parent table. If the table is on-demand, GSIs are billed per request. If provisioned, GSIs require their own provisioned capacity units.