¿Cómo obtengo el tamaño de un objeto ruby ​​en mb en Rails?

Quiero consultar un modelo de ActiveRecord, modificarlo y calcular el tamaño del nuevo objeto en mb. ¿Cómo hago esto?

Lamentablemente, el tamaño de las filas de datos en una base de datos, así como el tamaño del objeto de los objetos ruby ​​en la memoria, no están fácilmente disponibles.

Si bien es un poco más fácil tener una idea del tamaño del objeto en la memoria, aún tendría que encontrar todos los objetos que forman parte de su objeto de registro activo y, por lo tanto, deben contarse (lo que no es obvio). Incluso entonces, tendría que lidiar con cosas no obvias como datos compartidos / almacenados en caché, sobrecarga de clase, que puede ser necesario contar, pero no tiene que hacerlo.

En el lado de la base de datos, depende en gran medida del motor de almacenamiento utilizado. De la documentación de su base de datos, normalmente puede deducir los requisitos de almacenamiento para cada una de las columnas que definió en su tabla (que pueden variar en el caso de las columnas VARCHAR, TEXT o BLOB). Además, se incluyen recursos compartidos como índices, índices generales, etc. tabla general, … Para obtener una estimación, los requisitos de tamaño documentados para las distintas columnas de su tabla deberían ser suficientes, aunque

En general, es muy difícil obtener un tamaño correcto para cosas complejas como filas de bases de datos u objetos en memoria. Los sistemas no están diseñados para recostackr o proporcionar esta información.

A menos que sea absolutamente positivo para obtener datos exactos, debe errar por demasiado espacio. En general, para las bases de datos no hace daño tener demasiado espacio en el disco (en cuyo caso, la base de datos generalmente se ejecutará un poco más rápido) o demasiada memoria (lo que reducirá la presión de memoria para Ruby, lo que nuevamente lo hará más rápido).

A menudo, el uso de memoria de los procesos de Ruby no será obvio. Por lo tanto, el mejor curso de acción es casi siempre escribir su progtwig y luego probarlo con la cantidad deseada de datos reales y verificar su rendimiento y los requisitos de memoria. De esa manera, obtiene la información real que necesita, a saber: cuánta memoria necesita mi progtwig cuando se maneja mi conjunto de datos requerido.

El tamaño del registro dependerá totalmente de su base de datos, que es independiente de su aplicación Ruby on Rails. Será un desafío descubrir cómo obtener el tamaño, ya que necesita preguntar a la BASE DE DATOS qué tan grande es, y Rails (por diseño) lo protege mucho de los detalles reales de implementación de su base de datos.

Si necesita conocer el almacenamiento para estimar el tamaño de un disco duro para comprar, haría algunos cálculos matemáticos básicos como el tamaño estimado en la memoria y luego los multiplicaría por 1,5 para darle algo de espacio.

Si REALMENTE necesita saber cuánto espacio tiene, intente registrar la cantidad de espacio libre que tiene en el disco, escriba unos pocos miles de registros, luego mida nuevamente y luego haga los cálculos.