Our beloved old '97 Mazda MPV started pinging under load when it was relatively new, c. '95. This started at around 120K km. Over the next number of years I tried all sorts of things - premium fuel, gasoline additives, and colder-range plugs, all to no avail.
By 2014 it was at 299K km and had various oil & coolant leaks. It was fix it or dump it.
I started pulling taking things off, determined to go as far in as required to fix the leaks. The coolant leak (singular) turned out to be just loose intake manifold bolts, but I changed the metal gaskets anyway. Changing the front cam seals, valve cover gaskets, and the five O-rings up top (distributor shaft, distributor mounting plate, distributor blanking plate, PCV valve mounting plate, and PCV blanking plate) fixed the oil leaks, but this was the great thing - I'd never known where the PCV valve was. Found it tucked way down when I removed the intake plenum. Checked it, and it was blocked solid. No rattle, and couldn't blow air through either direction. Changed it out, and what a delight! No more pinging under any conditions, and way more power (possibly due to winding up to 5K RPM just for the sheer pleasure of it). I wish I'd done it 10 years before, but will not make that mistake again.
Our Mazda 5 has a Ford Duratec 2.3 engine, and per the FSM the IM has to be removed to change the PCV valve. I'll likely do it anyway.