MySQL-3.23.21-beta a BerkeleyDB tables
Pavel Janík ml.
Pavel na Janik.cz
Úterý Červenec 11 01:10:25 CEST 2000
Zdravím,
zkouším poslední beta verzi MySQL. Vytvořil jsem si tabulku:
mysql> CREATE TABLE t (id INT PRIMARY KEY) TYPE=BDB;
Query OK, 0 rows affected (1.30 sec)
Zobrazím si, zda se jedná opravdu o BerkeleyDB tabulku:
mysql> show table status;
+------+------------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
| Name | Type | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time | Update_time | Check_time | Create_options | Comment |
+------+------------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
| t | BerkeleyDB | Fixed | 10000 | 0 | 0 | NULL | 0 | 0 | NULL | NULL | NULL | NULL | | |
+------+------------+------------+-------+----------------+-------------+-----------------+--------------+-----------+----------------+-------------+-------------+------------+----------------+---------+
1 row in set (0.01 sec)
mysql>
Ano, je to BDB tabulka.
Zruším AUTO COMMIT:
mysql> SET AUTOCOMMIT=0;
Query OK, 0 rows affected (0.00 sec)
Začnu transakci:
mysql> BEGIN;
Query OK, 0 rows affected (0.01 sec)
Až sem je všechno v nejlepším pořádku. Nyní si spustím druhého klienta a
podívám se, co je v tabulce:
mysql> SELECT * FROM t;
Empty set (0.23 sec)
Ok, nic tam není, co by tam taky mělo být :-)) Zkusím tedy v prvním
klientovi něco přidat:
mysql> INSERT INTO t VALUES(1);
Query OK, 1 row affected (0.09 sec)
Nyní se zkusím podívat v prvním klientovi, co je v tabulce:
mysql> SELECT * FROM t;
+----+
| id |
+----+
| 1 |
+----+
1 row in set (0.24 sec)
mysql>
Samozřejmě, i v transakci vidím, co jsem zatím udělal. Copak udělá druhý
klient?
mysql> SELECT * FROM t;
A nic, prostě čeká. Čeká, až první udělá COMMIT nebo ROLLBACK. Opravdu si
takhle vývojáři MySQL představují podporu transakcí? :-( Myslím, že ne, z
čehož plyne, že mi něco uniklo. CO?
Jiné databázové servery korektně zobrazí:
test=# select * from t;
id
----
(0 rows)
:-) Nebudu říkat jaký jsem vyzkoušel...
--
Pavel Janík ml.
Pavel na Janik.cz
http://www.janik.cz
Další informace o konferenci Test