Access to SD cards from Arduino causes a huge amount of flash wear. The 512 byte sector size is not the size of flash pages, it is just a minimum transfer size.
The flash is written in terms of Record Units, RUs. RUs are a multiple of 16KiB with high end SDHC cards having 512KiB RUs.
If you use SD.h or SdFat in shared SPI mode you are causing some multiple of 16KB to be written every time a 512 byte virtual sector is written.
This means data is being copied many times in the card and flash is being erased and rewritten . The card cycles through all flash using a virtual to physical map for areas of flash.
In SPI mode an RU is written every time chip select goes high. The internal RAM buffer is written.
This is why a card rated at 100 MB/sec write rate runs at several 100 KB/sec in Arduino.
I offer a dedicated SPI mode in SdFat and this reduces wear by up to a factor of 100.
On Teensy 4.x I use this mode for 4-bit SDIO mode to achieve 22 MB/sec write. This is for 50 MHz bus speed so it is close to optimal.
Modern TLC flash can be rewritten about 3,000 times and QLC 1,000 times. Cards have excellent wear leveling so don't try to guess what they are doing.
Edit:
Here is an example of shared vs dedicated SPI on A Due. Almost a factor of ten.
Due Shared SPI
write speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
477.55,19684,950,1070
472.28,22019,951,1082
Due Dedicated SPI
write speed and latency
speed,max,min,avg
KB/Sec,usec,usec,usec
4533.09,216,110,111
4516.71,127,110,111