Author Topic: MYISAM dan Innodb  (Read 14799 times)

0 Members and 1 Guest are viewing this topic.

Offline rnd

  • Hero Member
  • *
  • Posts: 1.284
Re: MYISAM dan Innodb
« Reply #30 on: July 27, 2010, 06:06:23 PM »
Table Transaksi, Table Stock On Hand dan tidak masuk ke Table Stock Card ( karena error di sini ) maupun ke Table Stock Movement.

Yw2s, nama nama tabel ini kok kaya ngak asing ya, terlebih table stock movement  :laughing3:

Offline yw2s

  • Senior Member
  • *
  • Posts: 535
Re: MYISAM dan Innodb
« Reply #31 on: July 29, 2010, 09:06:15 AM »
nama tabel ini kok kaya ngak asing ya, terlebih table stock movement  :laughing3:

Kenal dimana sama table stock movement ?   :icon_biggrin:

Offline rnd

  • Hero Member
  • *
  • Posts: 1.284
Re: MYISAM dan Innodb
« Reply #32 on: July 29, 2010, 09:18:17 AM »
Kenal dimana sama table stock movement ?   :icon_biggrin:

H?RO dan G???t

Offline samsul

  • Junior Member
  • *
  • Posts: 179
Re: MYISAM dan Innodb
« Reply #33 on: September 14, 2011, 12:30:47 PM »
mungkin ini perlu sebagai bahan pertimbangan jika kita memilih type database di mysql (myisam apa innodb) :

(After having explained this for the 35th time, I decided it's time to simply put something on-line.)
When a MyISAM table grows large enough, you'll encounter the dreaded "The table is full" error. Now I could simply point at that page and leave this subject alone, but there's more to this story.
When this happens, the first reaction I hear is "You never told me that MySQL has a 4GB limit! What am I going to do?" Amusingly, I usually do describe the limit when I discuss the possibility of using MySQL with various groups--they often forget or underestimate the impact it will have. Putting that aside, the problem is easily fixed, as that page explains. You simply need to run an ALTER TABLE command.
And you'll need to wait. That ALTER TABLE is going to take some time. Really.
To protect yourself in the future, use the MAX_ROWS and AVG_ROW_LENGTH options at CREATE TABLE time if the table is likely to get big.
InnoDB tables do not have this limitation because their storage model is completely different.
Where does this limit come from?
In a MyISAM table with dynamic (variable length) rows, the index file for the table (tablename.MYI) stores row locations using 32-bit pointers into the data file (tablename.MYD). That means it can address only 4GB of space.
This problem is both a historical artifact and an optimization. Back when MySQL was created, it wasn't common to store that much data in a single table. Heck, for a long time 4GB was an entire hard disk and most operating systems had trouble with files larger than 2GB. Obviously those days are gone. Modern operating systems have no trouble with large files and hard disks larger than 100GB are quite common.
From an optimization point of view, however, the 32-bit pointer still makes sense. Why? Because most people are running MySQL on 32-bit hardware (Intel/Linux). That will change as use of AMD's Opteron becomes more widespread, but 32-bit will be the majority for the next few years. Using 32-bit pointers is the most efficient way to do this on 32-bit hardware. And even today, most MySQL installations don't have tables anywhere near 4GB in size. Sure, there are a lot of larger deployments emerging. They're all relatively new.
An Example
Here's a table that you might use to store weather data:
mysql> describe weather;
+-----------+--------------+------+-----+------------+-------+
| Field     | Type         | Null | Key | Default    | Extra |
+-----------+--------------+------+-----+------------+-------+
| city      | varchar(100) |      | MUL |            |       |
| high_temp | tinyint(4)   |      |     | 0          |       |
| low_temp  | tinyint(4)   |      |     | 0          |       |
| the_date  | date         |      |     | 0000-00-00 |       |
+-----------+--------------+------+-----+------------+-------+
4 rows in set (0.01 sec)
To find its size limit, we'll use SHOW TABLE STATUS
mysql> show table status like 'weather' \G
*************************** 1. row ***************************
           Name: weather
           Type: MyISAM
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 4294967295
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2003-03-03 00:43:43
    Update_time: 2003-03-03 00:43:43
     Check_time: 2003-06-14 15:11:21
 Create_options:
        Comment:
1 row in set (0.00 sec)
There it is. Notice that Max_data_length is 4GB. Let's fix that.
mysql> alter table weather max_rows = 200000000000 avg_row_length = 50;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show table status like 'weather' \G
*************************** 1. row ***************************
           Name: weather
           Type: MyISAM
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 1099511627775
   Index_length: 1024
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2003-06-17 13:12:49
    Update_time: 2003-06-17 13:12:49
     Check_time: NULL
 Create_options: max_rows=4294967295 avg_row_length=50
        Comment:
1 row in set (0.00 sec)
Excellent. Now MySQL will let us store a lot more data in that table.
Too Many Rows?
Now, the astute reader will notice the Create_options specify a limit of 4.2 billion rows. That's right, there's still a limit, but now it's a limit on number of rows, not the size of the table. Even if you have a table with rows that are 10 times as large, you're still limited to roughly 4.2 billion rows.
Why?
Again, this is 32-bit hardware. If you move to a 64-bit system, the limit is raised accordingly.

Offline hell_angel

  • Junior Member
  • *
  • Posts: 316
Re: MYISAM dan Innodb
« Reply #34 on: October 28, 2015, 07:23:42 PM »
Quote
...jadinya teramat penting bahwa dbserver mendukung "transactions" yaitu teknologi Windows yang bisa menjamin bahwa proses penyimpanan data dari RANGKAIAN (lebih dari satu) tabel ter-eksekusi dengan konsep ALL OR NOTHING (semua berhasil, atau  semua batal/rollback), tidak terjadi sebagian berhasil sebagian gagal.
Innodb mendukung transactions, MyIsam tidak

mau meralat dikit statement anda bahwa TRANSACTION itu feature dari windows, keliru itu, itu feature yang disediakan oleh database engine RDBMS. untuk MSSQL, kalau tidak salah feature itu sudah ada sejak MSSQL 2000, bahkan mungkin sebelum versi itu (saya waktu mssql yang sejaman dengan versi windows server masih bernama NT, kebetulan masih belajar programming, wkwkwkwk, waktu itu belajar PASCAL, MS BASIC, dkk udah berasa gagah aja sudah, wkwkwkwkkw). beda dengan MySQL, innoDb yang mendukung transaction di MySQL ada, baru sejak MySQL versi 5.0.

aneh, sepertinya semua sibuk berargumen tentang perbedaan MYISAM dan innoDB, tapi dari 3 halaman ini sekilas saya baca, tidak ada satupun yang tahu atau sadar cerita sejarah tentang MYISAM dan innoDB. saya yakin kebanyakan rekan-rekan disini sebagian besar bermigrasi dari dbf ke MySQL adalah setelah versi 5.xx. Yang saya takutkan kalau seperti ini, sejarah tentang MYISAM vs innoDB jadi simpang siur seperti dulu sejarah jadi tidak jelas  sewaktu jaman ORBA (ngeri toh...?).

jadi begini ceritanya :

MySQL dengan MYISAMnya itu pertama ada sebenarnya dulu bukan untuk database apps oriented, dia hanya diperuntukkan untuk database website (bedakan dengan web base apps) contoh : untuk search engine, untuk menyimpan data user account, untuk menyimpan comment", dan lain-lain,  yang kebetulan tidak memerlukan ACID, seperti database apps oriented yang contoh kasusnya, aplikasi yang mengurusi stock dan lain-lain seperti di contohkan di thread ini pada reply postnya sebelumnya. karena untuk searching dan lain-lain tadi, transaction tidak diperlukan (karena biasanya hanya memerlukan 1 tabel sekali open, tambah atau modifikasi). pertimbangannya biar bagaimanapun juga, menambahkan feature TRANSACTION akan memperlambat proses, SELECT, INSERT, UPDATE, walaupun cuman sepersekian detik.

akan tetapi seiring perkembangan, MySQL semakin banyak pemakainnya, dan para pengguna MySQL ini banyak yang berkeinginan supaya MySQL juga seperti halnya kompetitornya (MSSQL & ORACLE) bisa mendukung TRANSACTIONS. nah hal ini oleh vendornya dipenuhi pertama kali pada versi MySQL 5.0. (KARENA BAGAIMANAPUN JUGA KEKUATAN DARI PRODUCT MYSQL INI BUKAN PADA TEKNOLOGINYA, KINERJANYA DAN LAIN-LAINNYA, BULSSHIT, ITU MAH RELATIF, LAGIAN OPTIMALNYA KINERJA MySQL DB SERVERNYA, SEBAGIAN TERLETAK PADA BAGUS TIDAKNYA KITA MENGATUR SETTINGNYA DI my.ini ATAU my.cnf nya, THE TRUE POWER OF MYSQL DIBANDING KOMPETITORNYA ADALAH PADA GRATISNYA:icon_biggrin:, GRATIS TIS TIS...UNTUK NEGARA DUNIA KETIGA SEPERTI INDONESIA INI, KATA GRATIS TU ADALAH MELODI YANG PALING MERDU DI TELINGA KITA)

jadi untuk ts, menurut saya, pertimbanganya untuk menggunakan MYISAM atau innoDB, lihat keperluannya, ada tidak keperluannya untuk mengupdate atau insert table atau kombinasi keduanya lebih dari SATU table?, kalau iya, berarti anda perlu innoDB (contoh kasus, aplikasi anda sekali tekan tombol save, akan meng-INSERT table INVOICE-HEADER, terus meng-INSERT juga table INVOICE-DETAIL, dan terakhir meng-UPDATE table STOCK, kalau table yang bakal di INSERT atau UPDATE cuman satu-satu, berarti mau pakai MYISAM juga boleh" saja, malahan sepersekian detik prosesnya lebih cepat.


sekian dan terima kasih


saya DODIT, selamat datang di STAND UP COMEDY, saya itu dibesarkan di keluarga jawa yang memegang teguh budaya eropa,    :laughing3: :icon_biggrin:
« Last Edit: October 28, 2015, 07:44:12 PM by hell_angel »
A man who can moves a mountain, begins by carrying a small stone....