This project is archived and is in readonly mode.

#5326 ✓stale

Use ping instead of stat for mysql adapter in activerecord

Reported by Taylor | August 7th, 2010 @ 05:55 AM

The stat command is more expensive than the ping command (server side).

When there is a high number of AR connections issuing this command, it negatively impacts database performance. This patch reduces the performance impact of these calls, and allows for the same functionality.



Comments and changes to this ticket

  • Taylor

    Taylor August 9th, 2010 @ 05:28 PM

    Further information:

    I used a single ruby process and two models (each with independent AR connections) to issue repeatedly (two threads, one for each model, 10K iterations). When active? used 'stat' CPU usage jumped approximately to 20-25% vs 'ping' which was 10-15% (from 0% as reported by top).

    It seems that deployments with a decent size connection pool, and a high number of application instances would see a decent performance improvement from this patch.


    ruby 1.8.7-p299
    mysql 5.0.51
    (mysql instance only being used for these tests)

  • Santiago Pastorino

    Santiago Pastorino February 2nd, 2011 @ 05:00 PM

    • State changed from “new” to “open”

    This issue has been automatically marked as stale because it has not been commented on for at least three months.

    The resources of the Rails core team are limited, and so we are asking for your help. If you can still reproduce this error on the 3-0-stable branch or on master, please reply with all of the information you have about it and add "[state:open]" to your comment. This will reopen the ticket for review. Likewise, if you feel that this is a very important feature for Rails to include, please reply with your explanation so we can consider it.

    Thank you for all your contributions, and we hope you will understand this step to focus our efforts where they are most helpful.

  • Santiago Pastorino

    Santiago Pastorino February 2nd, 2011 @ 05:00 PM

    • State changed from “open” to “stale”

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href=""></a>

People watching this ticket