PostgreSQL مقابل MySQL: كيف تقارن أحجام بياناتهم ببعضها البعض؟
-
28-09-2019 - |
سؤال
لنفس مجموعة البيانات ، مع معظم البيانات النصية ، كيف يحجم البيانات (الجدول + فهرس) من postgresql مقارنة مع MySQL؟
يستخدم PostgreSQL MVCC ، مما يشير إلى أن حجم بياناته سيكون أكبر
في هذا العرض التقديمي ، تحدث أكبر موقع مدونة في اليابان عن ترحيلها من PostgreSQL إلى MySQL. كان أحد أسباب الابتعاد عن PostgreSQL هو أن حجم البيانات في PostgreSQL كان كبيرًا جدًا (ص 41):الهجرة من PostgreSQL إلى MySQL في Cocolog ، أكبر مجتمع مدونة في اليابان
PostgreSQL لديه ضغط البيانات ، بحيث ينبغي أن يجعل حجم البيانات أصغر. لكن المكون الإضافي MySQL لديه ضغط أيضًا.
هل لدى أي شخص أي تجربة فعلية حول كيفية مقارنة أحجام البيانات في PostgreSQL و MySQL مع بعضها البعض؟
المحلول
- يستخدم MySQL MVCC أيضًا ، فقط تحقق من InnoDB. ولكن ، في PostgreSQL ، يمكنك تغيير FillFactor لتوفير مساحة للتحديثات المستقبلية. مع هذا ، يمكنك إنشاء قاعدة بيانات تحتوي على مساحة للبيانات الحالية ولكن أيضًا لبعض التحديثات والحذف المستقبلية. عندما يقوم Autovacuum و Hot بأشياءهم بشكل صحيح ، يمكن أن يكون حجم قاعدة البيانات الخاصة بك مستقرًا.
- تدور المدونة حول الإصدارات القديمة ، وقد تغيرت الكثير من الأشياء و PostgreSQL تقوم بعمل أفضل بكثير في الضغط كما فعلت في الأيام الخوالي.
- يعتمد الضغط على نوع البيانات والتكوين والسرعة أيضًا. عليك أن تختبر لترى كيف تعمل من أجلك.
لقد قمت ببعض التحويلات من MySQL إلى PostgreSQL وفي كل هذه الحالات ، كان PostgreSQL أصغر حوالي 10 ٪ (MySQL 5.0 => postgresql 8.3 و 8.4). تم استخدام هذا 10 ٪ لتغيير FillFactor على الجداول الأكثر تحديثًا ، وتم تعيينها على FillFactor 60 إلى 70. كانت السرعة أفضل بكثير (لم تعد هناك مشاكل مع أكثر من 20 مستخدمًا متزامنًا) وكان حجم البيانات مستقرًا أيضًا ، ولا يوجد MVCC مستمرًا خارج عن السيطرة أو الفراغ إلى بعيد.
MySQL و PostgreSQL هما وحوشان مختلفان ، PostgreSQL يدور حول الموثوقية حيث يكون MySQL populair.
نصائح أخرى
كلاهما له متطلبات التخزين في وثائق كل منهما:
MySQL: http://dev.mysql.com/doc/refman/5.1/en/storage-requirements.html
Postgres: http://www.postgresql.org/docs/current/interactive/datatype.html
لا تظهر مقارنة سريعة بين الاثنين أي "Zomg postgres" تتطلب 2 ميغابايت لتخزين اختلافات النوع ". أفترض أن Postgres يمكن أن يكون لها بيانات تصويرية أعلى من MySQL ، أو يجب أن تمدد ملفات البيانات الخاصة بها في قطع أكبر ، لكن لا يمكنني العثور على أي شيء واضح أن Eastgres "يهدف" التي ترحيلها إلى MySQL هي العلاج.
أود أن أضيف أنه بالنسبة إلى متاجر الأعمدة الكبيرة ، يستفيد PostgreSQL أيضًا من ضغطها باستخدام "عضو بسيط وسريع للغاية في عائلة LZ لتقنيات الضغط"
لقراءة المزيد حول هذا ، تحقق من http://www.postgresql.org/docs/9.0/static/storage-toast.html
إنه مستوى منخفض إلى حد ما وربما ليس من الضروري معرفة ذلك ، ولكن نظرًا لأنك تستخدم مدونة ، فقد تستفيد منها.
حول الفهارس ،
يخزن MySQL البيانات التي تجعلها ضخمة. لا بعد ذلك. هذا يعني أن حجم تخزين فهرس B-Tree في Postgres لا يعتمد على عدد الأعمدة التي يمتد عليها أو أي البيانات التي يمتلكها العمود.
يدعم Postgres أيضًا فهارس جزئية (على سبيل المثال حيث الحالة = 0) وهي ميزة قوية للغاية لمنع فهارس البناء على ملايين الصفوف عند الحاجة إلى بضع مئات فقط.
نظرًا لأنك ستضع الكثير من البيانات في Postgres ، فمن المحتمل أن تجد أنه من العملي أن تكون قادرًا على إنشاء فهارس تبييض قفل الجدول.
مرسل من الايفون الخاص بي. آسف على الإملاء السيئ وعدم وجود المراجع