'daki pg_attribute tablosundaki yavaş örtülü bir sorgunun düzeltilmesi Üretim ortamımızda, Rails uygulamasında sık sık ani (her 1 saatte bir) fark ettik. Daha derine inmek, tek bir HTTP isteğinde kümülatif olarak> 1.5 s (100x) olarak adlandırılan aşağıdaki sorgudan kaynaklanır.Rails
SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = ?::regclass AND a.attnum > ? AND NOT a.attisdropped
ORDER BY a.attnum
Biz açıkça bu tabloyu çağıran kod var ama her model için özelliklerini anlamaya Raylar tarafından denir görünüyor yoktur. "Unexpected SQL queries to Postgres database on Rails/Heroku" ile ilgili.
Ancak Rails tarafından tekrarlı olarak çağrılmamalı mıydı?
Bunu nasıl hızlandırabiliriz?
Bu aramanın nerede olduğunu belirlediniz mi? Öyleyse, muhtemelen bu yanıtı memcache veya benzerlerinde nasıl önbelleğe alabileceğinizi ve sıklığı nasıl azaltabileceğinizi anlayabilirsiniz. Çekirdek rayları bir araya getirmeyi asla ortadan kaldırmazdım, ancak bir ttl ile önbelleğe alma yardımcı olabilir. Sadece bir düşünce. Düzenleme için – engineersmnky
Thx. Mesele şu ki, bunu asla açık bir şekilde değiliz. Belki de bir şeyin yan etkisi. İzlemenin nasıl bir fikri var? –
'' 1.5 ms'de çalışır. Ben buna * yavaş * diyemezdim ve 100x' denir ama tekrar tekrar yüzlerce kez çağırmazdım. Bu bir RoR "özelliği" – joop