MYISAMPACK(1) MariaDB Database System MYISAMPACK(1)

myisampack - تولید جدول‌های فشرده و فقط‌خواندنی MyISAM

myisampack [options] file_name ...

ابزار myisampack جدول‌های MyISAM را فشرده می‌کند. myisampack با فشرده‌سازی جداگانهٔ هر ستون جدول کار می‌کند. معمولاً myisampack فایل داده را بین ۴۰%–۷۰% فشرده‌سازی می‌کند.

هنگامی که جدول بعداً استفاده می‌شود، سرور اطلاعات مورد نیاز برای از فشرده‌سازی خارج کردن ستون‌ها را در حافظه بارگذاری می‌کند. این امر منجر به عملکرد بسیار بهتری در هنگام دسترسی به ردیف‌های منفرد می‌شود، چرا که تنها کافی است دقیقاً یک ردیف از حالت فشرده خارج شود.

سیستم MariaDB در صورت امکان از mmap() برای انجام نگاشت حافظه روی جدول‌های فشرده استفاده می‌کند. اگر mmap() کار نکند، MariaDB به عملیات معمول خواندن/نوشتن فایل بازمی‌گردد.

لطفاً به موارد زیر توجه داشته باشید:

•اگر سرور mariadbd با غیرفعال بودن قفل‌گذاری خارجی (external locking) اجرا شده باشد، اجرای myisampack در صورتی که ممکن است جدول در طول فرایند فشرده‌سازی توسط سرور به‌روزرسانی شود، ایدهٔ مناسبی نیست. امن‌ترین روش، فشرده‌سازی جدول‌ها در زمان متوقف بودن سرور است.
•پس از فشرده‌سازی یک جدول، آن جدول فقط‌خواندنی می‌شود. به‌طور کلی این موضوع هدف اصلی است (مانند دسترسی به جدول‌های فشرده روی یک CD).

دستور myisampack را به این صورت اجرا کنید:

shell> myisampack [options] file_name ...

هر آرگومان نام فایل باید نام یک فایل ایندکس (.MYI) باشد. اگر در دایرکتوری پایگاه داده نیستید، باید مسیر منتهی به فایل را مشخص کنید. حذف پسوند .MYI مجاز است.

پس از اینکه جدولی را با myisampack فشرده کردید، باید از myisamchk -rq برای بازسازی ایندکس‌های آن استفاده کنید؛ به myisamchk(1) مراجعه کنید.

ابزار myisampack از گزینه‌های زیر پشتیبانی می‌کند. همچنین فایل‌های گزینه را خوانده و از گزینه‌های پردازش آن‌ها که در بخش 4.2.3.3.1، “Command-Line Options that Affect Option-File Handling” توضیح داده شده است پشتیبانی می‌کند.

•--help, -?

نمایش یک پیام راهنما و خروج.

•--backup, -b

تهیهٔ یک نسخهٔ پشتیبان از فایل دادهٔ هر جدول با نام tbl_name.OLD.

•--character-sets-dir=path

دایرکتوری محل نصب مجموعه‌های نویسه (character sets). نگاه کنید به بخش 9.5، “Character Set Configuration”.

•--debug[=debug_options], -# [debug_options]

نوشتن یک لاگ اشکال‌زدایی. یک رشتهٔ معمولی برای debug_options به صورت 'd:t:o,file_name' است. مقدار پیش‌فرض 'd:t:o' می‌باشد.

•--force, -f

تولید جدول فشرده حتی اگر اندازهٔ آن از نسخهٔ اصلی بزرگ‌تر شود یا فایل واسط ناشی از فراخوانی قبلی myisampack وجود داشته باشد. (myisampack در حین فشرده‌سازی جدول، یک فایل واسط به نام tbl_name.TMD در دایرکتوری پایگاه داده ایجاد می‌کند. اگر فرایند myisampack را متوقف کنید، ممکن است فایل .TMD حذف نشود.) در حالت عادی، اگر myisampack ببیند که فایل tbl_name.TMD وجود دارد با یک خطا خارج می‌شود. با گزینهٔ --force، ابزار myisampack به هر حال جدول را فشرده می‌کند.

•--join=big_tbl_name, -j big_tbl_name

تمام جدول‌های نام‌برده در خط فرمان را درون یک جدول فشردهٔ منفرد به نام big_tbl_name ادغام می‌کند. همهٔ جدول‌هایی که قرار است ترکیب شوند باید ساختار کاملاً یکسانی داشته باشند (نام‌ها و انواع ستون‌های یکسان، نمایه‌های یکسان و غیره).

big_tbl_name نباید پیش از عملیات ادغام وجود داشته باشد. تمام جدول‌های مبدأ ذکرشده در خط فرمان که قرار است در big_tbl_name ادغام شوند باید وجود داشته باشند. جدول‌های مبدأ برای عملیات ادغام خوانده می‌شوند اما تغییری نمی‌کنند. عملیات ادغام فایلی با پسوند .frm برای big_tbl_name ایجاد نمی‌کند؛ بنابراین پس از اتمام عملیات ادغام، فایل .frm را از یکی از جدول‌های مبدأ کپی کرده و نام آن را به big_tbl_name.frm تغییر دهید.

•--silent, -s

حالت بی‌صدا. خروجی را تنها هنگامی می‌نویسد که خطایی رخ دهد.

•--test, -t

جدول را در عمل فشرده نمی‌کند، بلکه تنها فشرده‌سازی آن را می‌آزماید.

•--tmpdir=path, -T path

از دایرکتوری نام‌برده به‌عنوان مکانی که myisampack فایل‌های موقت را در آن ایجاد می‌کند استفاده می‌کند.

•--verbose, -v

حالت پرگو. اطلاعاتی دربارهٔ پیشرفت عملیات فشرده‌سازی و نتیجهٔ آن می‌نویسد.

•--version, -V

نمایش اطلاعات نسخه و خروج.

•--wait, -w

در صورتی که جدول در حال استفاده باشد منتظر مانده و دوباره تلاش می‌کند. اگر سرور mariadbd با قفل‌گذاری خارجی غیرفعال اجرا شده باشد، در صورتی که احتمال به‌روزرسانی جدول توسط سرور در حین فرایند فشرده‌سازی وجود داشته باشد، اجرای myisampack توصیه نمی‌شود.

توالی دستورهای زیر یک نشست نمونه از فشرده‌سازی جدول را نشان می‌دهد:

shell> ls -l station.*
-rw-rw-r--   1 monty    my         994128 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          53248 Apr 17 19:00 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
shell> myisamchk -dvv station
MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-02-02  3:06:43
Data records:              1192  Deleted blocks:              0
Datafile parts:            1192  Deleted data:                0
Datafile pointer (bytes):     2  Keyfile pointer (bytes):     2
Max datafile length:   54657023  Max keyfile length:   33554431
Recordlength:               834
Record format: Fixed length
table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long        1024       1024          1
2   32    30  multip. text                10240       1024          1
Field Start Length Type
1     1     1
2     2     4
3     6     4
4     10    1
5     11    20
6     31    1
7     32    30
8     62    35
9     97    35
10    132   35
11    167   4
12    171   16
13    187   35
14    222   4
15    226   16
16    242   20
17    262   20
18    282   20
19    302   30
20    332   4
21    336   4
22    340   1
23    341   8
24    349   8
25    357   8
26    365   2
27    367   2
28    369   4
29    373   4
30    377   1
31    378   2
32    380   8
33    388   4
34    392   4
35    396   4
36    400   4
37    404   1
38    405   4
39    409   4
40    413   4
41    417   4
42    421   4
43    425   4
44    429   20
45    449   30
46    479   1
47    480   1
48    481   79
49    560   79
50    639   79
51    718   79
52    797   8
53    805   1
54    806   1
55    807   20
56    827   4
57    831   4
shell> myisampack station.MYI
Compressing station.MYI: (1192 records)
- Calculating statistics
normal:     20  empty-space:   16  empty-zero:     12  empty-fill:  11
pre-space:   0  end-space:     12  table-lookups:   5  zero:         7
Original trees:  57  After join: 17
- Compressing file
87.14%
Remember to run myisamchk -rq on compressed tables
shell> ls -l station.*
-rw-rw-r--   1 monty    my         127874 Apr 17 19:00 station.MYD
-rw-rw-r--   1 monty    my          55296 Apr 17 19:04 station.MYI
-rw-rw-r--   1 monty    my           5767 Apr 17 19:00 station.frm
shell> myisamchk -dvv station
MyISAM file:     station
Isam-version:  2
Creation time: 1996-03-13 10:08:58
Recover time:  1997-04-17 19:04:26
Data records:               1192  Deleted blocks:              0
Datafile parts:             1192  Deleted data:                0
Datafile pointer (bytes):      3  Keyfile pointer (bytes):     1
Max datafile length:    16777215  Max keyfile length:     131071
Recordlength:                834
Record format: Compressed
table description:
Key Start Len Index   Type                 Root  Blocksize    Rec/key
1   2     4   unique  unsigned long       10240       1024          1
2   32    30  multip. text                54272       1024          1
Field Start Length Type                         Huff tree  Bits
1     1     1      constant                             1     0
2     2     4      zerofill(1)                          2     9
3     6     4      no zeros, zerofill(1)                2     9
4     10    1                                           3     9
5     11    20     table-lookup                         4     0
6     31    1                                           3     9
7     32    30     no endspace, not_always              5     9
8     62    35     no endspace, not_always, no empty    6     9
9     97    35     no empty                             7     9
10    132   35     no endspace, not_always, no empty    6     9
11    167   4      zerofill(1)                          2     9
12    171   16     no endspace, not_always, no empty    5     9
13    187   35     no endspace, not_always, no empty    6     9
14    222   4      zerofill(1)                          2     9
15    226   16     no endspace, not_always, no empty    5     9
16    242   20     no endspace, not_always              8     9
17    262   20     no endspace, no empty                8     9
18    282   20     no endspace, no empty                5     9
19    302   30     no endspace, no empty                6     9
20    332   4      always zero                          2     9
21    336   4      always zero                          2     9
22    340   1                                           3     9
23    341   8      table-lookup                         9     0
24    349   8      table-lookup                        10     0
25    357   8      always zero                          2     9
26    365   2                                           2     9
27    367   2      no zeros, zerofill(1)                2     9
28    369   4      no zeros, zerofill(1)                2     9
29    373   4      table-lookup                        11     0
30    377   1                                           3     9
31    378   2      no zeros, zerofill(1)                2     9
32    380   8      no zeros                             2     9
33    388   4      always zero                          2     9
34    392   4      table-lookup                        12     0
35    396   4      no zeros, zerofill(1)               13     9
36    400   4      no zeros, zerofill(1)                2     9
37    404   1                                           2     9
38    405   4      no zeros                             2     9
39    409   4      always zero                          2     9
40    413   4      no zeros                             2     9
41    417   4      always zero                          2     9
42    421   4      no zeros                             2     9
43    425   4      always zero                          2     9
44    429   20     no empty                             3     9
45    449   30     no empty                             3     9
46    479   1                                          14     4
47    480   1                                          14     4
48    481   79     no endspace, no empty               15     9
49    560   79     no empty                             2     9
50    639   79     no empty                             2     9
51    718   79     no endspace                         16     9
52    797   8      no empty                             2     9
53    805   1                                          17     1
54    806   1                                           3     9
55    807   20     no empty                             3     9
56    827   4      no zeros, zerofill(2)                2     9
57    831   4      no zeros, zerofill(1)                2     9
myisampack اطلاعات زیر را نمایش می‌دهد:
•normal

تعداد ستون‌هایی که هیچ فشرده‌سازی اضافی برای آن‌ها استفاده نشده است.

•empty-space

تعداد ستون‌هایی که تنها شامل مقادیر فاصله هستند. این موارد یک بیت فضا اشغال می‌کنند.

•empty-zero

تعداد ستون‌هایی که تنها شامل مقادیر صفر دودویی (binary zero) هستند. این موارد یک بیت فضا اشغال می‌کنند.

•empty-fill

تعداد ستون‌های عدد صحیحی که دامنهٔ کامل بایتی نوع دادهٔ خود را اشغال نمی‌کنند. این ستون‌ها به یک نوع دادهٔ کوچک‌تر تغییر می‌یابند. به عنوان مثال، یک ستون BIGINT (هشت بایت) در صورتی که تمام مقادیر آن در بازهٔ -128 تا 127 باشد، می‌تواند به عنوان یک ستون TINYINT (یک بایت) ذخیره شود.

•pre-space

تعداد ستون‌های ده‌دهی (decimal) که با فاصله‌های ابتدایی ذخیره شده‌اند. در این حالت، هر مقدار شامل شمارشی از تعداد فاصله‌های ابتدایی است.

•end-space

تعداد ستون‌هایی که فاصله‌های انتهایی زیادی دارند. در این حالت، هر مقدار شامل شمارشی از تعداد فاصله‌های انتهایی است.

•table-lookup

ستون تنها تعداد کمی مقدار متفاوت داشت که پیش از فشرده‌سازی هافمن (Huffman) به یک ENUM تبدیل شدند.

•zero

تعداد ستون‌هایی که تمام مقادیر آن‌ها صفر است.

•Original trees

تعداد اولیهٔ درخت‌های هافمن.

•After join

تعداد درخت‌های مجزای هافمن که پس از ادغام درخت‌ها به منظور صرفه‌جویی در فضای سرایند (header) باقی مانده‌اند.

پس از فشرده‌سازی یک جدول، خطوط Field نمایش‌داده‌شده توسط myisamchk -dvv شامل اطلاعات تکمیلی دربارهٔ هر ستون هستند:

•Type

نوع داده. این مقدار می‌تواند شامل هر یک از توصیف‌کننده‌های زیر باشد:

•constant

تمام سطرها مقدار یکسانی دارند.

•no endspace

فاصله‌های انتهایی ذخیره نشوند.

•no endspace, not_always

فاصله‌های انتهایی ذخیره نشوند و فشرده‌سازی فاصله‌های انتهایی برای تمام مقادیر اعمال نشود.

•no endspace, no empty

فاصله‌های انتهایی ذخیره نمی‌شوند. مقادیر خالی ذخیره نمی‌شوند.

•table-lookup

ستون به یک ENUM تبدیل شده است.

•zerofill(N)

N بایت پرارزش در مقدار، همواره ۰ هستند و ذخیره نمی‌شوند.

•no zeros

صفرها ذخیره نمی‌شوند.

•always zero

مقادیر صفر با استفاده از یک بیت ذخیره می‌شوند.

•Huff tree

شمارهٔ درخت هافمن مرتبط با ستون.

•Bits

تعداد بیت‌های استفاده‌شده در درخت هافمن.

پس از اجرای myisampack، باید برای بازسازی نمایه‌ها myisamchk را اجرا کنید. در این هنگام، می‌توانید بلوک‌های نمایه را نیز مرتب کرده و آمارهای لازم برای کارکرد کارآمدتر بهینه‌ساز MariaDB را ایجاد کنید:

shell> myisamchk -rq --sort-index --analyze tbl_name.MYI

پس از قرار دادن جدول فشرده‌شده در دایرکتوری پایگاه دادهٔ MariaDB، باید دستور mariadb-admin flush-tables را اجرا کنید تا mariadbd مجبور به استفاده از جدول جدید شود.

برای از حالت فشرده خارج کردن یک جدول فشرده، از گزینهٔ --unpack در myisamchk استفاده کنید.

کپی‌رایت 2007-2008 MySQL AB, 2008-2010 Sun Microsystems, Inc., 2010-2025 MariaDB Foundation

این مستندات نرم‌افزار آزاد است؛ شما می‌توانید آن را تنها تحت شرایط مجوز عمومی همگانی گنو همان‌گونه که توسط بنیاد نرم‌افزارهای آزاد منتشر شده است، بازتوزیع کرده و/یا تغییر دهید؛ نسخهٔ ۲ مجوز.

این مستندات به این امید که مفید واقع شود توزیع شده است، اما بدون هیچ‌گونه ضمانتی؛ حتی بدون ضمانت ضمنی قابل فروش بودن یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی همگانی گنو مراجعه کنید.

شما باید به همراه این برنامه یک نسخه از مجوز عمومی همگانی گنو را دریافت کرده باشید؛ در غیر این صورت، به Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA بنویسید یا http://www.gnu.org/licenses را ببینید. برای اطلاعات بیشتر، لطفاً به مستندات MariaDB که به‌صورت برخط در https://mariadb.com/docs در دسترس است مراجعه کنید.

بنیاد MariaDB (http://www.mariadb.org).

5 March 2025 MariaDB 11.8