0071NAME IS NULL2008/08/03(日) 11:21:01ID:??? 行ロックに対応したら有り難いなあ 用途が広がりそう 0072NAME IS NULL2008/08/03(日) 12:56:14ID:ZzfOsO6b ほんと使えるなぁコレ。 0073NAME IS NULL2008/10/07(火) 23:49:21ID:iBo0WhZL スクリプト流し込む時どんなツール使ってる? 0074NAME IS NULL2008/10/10(金) 21:06:50ID:???>>73 俺はExecute Queryってツールを使ってるよ。 http://executequery.org/index.jsp
そういえば、1.0.79で行レベルロック機能が有効になったと思ったら、 そのすぐ後に1.1.100も出てきて、ここしばらく動きが速いね。 0075NAME IS NULL2008/10/15(水) 01:29:56ID:n9DCCDo6>>74 さんくす ほほん、、、え、えいごかぁ 0076NAME IS NULL2008/10/15(水) 10:08:35ID:??? eclipse 使ってるなら DBViewerプラグインが良いよ。 ttp://www.ne.jp/asahi/zigen/home/plugin/dbviewer/about_jp.html 0077NAME IS NULL2008/10/15(水) 22:09:03ID:??? なんか "GROUP BY" がおかしくない?
CREATE TABLE TESTTBL( A INTEGER NOT NULL , B INTEGER NOT NULL , PRIMARY KEY(A, B) );
INSERT INTO TESTTBL (A, B) VALUES (1, 1); INSERT INTO TESTTBL (A, B) VALUES (1, 2); INSERT INTO TESTTBL (A, B) VALUES (2, 1); INSERT INTO TESTTBL (A, B) VALUES (2, 2);
SELECT B FROM TESTTBL GROUP BY B;
DROP TABLE IF EXISTS TESTTBL;
これで期待する結果は
1 2
なのに
1 2 1 2
が返されるだけど… 0078NAME IS NULL2008/10/15(水) 22:26:30ID:??? DISTINCT 0079NAME IS NULL2008/10/15(水) 23:33:36ID:???>>78 う〜ん、そうなんだけど… 0080NAME IS NULL2008/10/16(木) 14:23:40ID:??? 普通に2件返るよ。 ver1.0.67でちょっと古いけど。 0081NAME IS NULL2008/10/16(木) 22:49:53ID:??? なるねぇ
> SELECT B FROM TESTTBL GROUP BY B; > B > 1 > 2 > 1 > 2 > (4 行, 0 ms)
@H2 1.1.100(2008-10-04) 0082NAME IS NULL2008/10/16(木) 23:20:36ID:??? Oracle10i で2件、Postgres8.3で2件、H2 1.1.100で4件なのを確認した。 0083NAME IS NULL2008/10/17(金) 00:18:39ID:??? うーん、公式に投げた方が良い気がする。どこで変わったんだろう。 0084NAME IS NULL2008/10/18(土) 00:54:02ID:??? うお、人が居る!
「Re: Java 1.5, but still support Java 1.4 using Retrotranslator, Retroweaver, or using -target jsr14」 http://www.mail-archive.com/h2-database@googlegroups.com/msg01773.html >> The performance on Flash (NAND) file systems is also fairly poor >> mostly because of the large number of small write operations executed >> by H2.
> This should be solved in the new storage mechanism ('page store').
SSDに最適化したストレージ機構を別途作るってことっぽいね。 ファイルへの書き込みを細切れに行わず、ある程度まとまった単位で行うことで、 SSD使用時のパフォーマンス劣化を防ぐ……んだと思う。 0112NAME IS NULL2009/07/23(木) 09:50:08ID:??? 1.1.116来てるね。
Page Store については > still experimental, and the file format will change, but it is quite stable now. らしい。 0113NAME IS NULL2009/10/19(月) 09:26:01ID:0c2k2osu Version 1.2.121 age 0114NAME IS NULL2009/11/16(月) 02:33:19ID:gLSep6AL Version 1.2.122 (2009-10-28)
* The native fulltext search now supports streaming CLOB data. * If the database URL ends with ;PAGE_STORE=TRUE and a database in the old format exists, it is automatically converted to the new page store format if possible. A backup of the database is created first. Automatic conversion is not supported if the database was not closed normally (if it contains uncommitted transactions). * Dropping the current user is now allowed if another admin user exists. * Values of type BINARY or BLOB could not be converted to the data type OTHER. * SHUTDOWN COMPACT now fully compacts the database. * New system properties h2.maxCompactCount and h2.maxCompactTime to allow changing the default behavior (at most 2 seconds compacting when closing the database). * New sorted insert optimization (see Performance / Database Performance Tuning). * Issue 116: The files h2*-sources.jar and h2*-javadoc.jar are now in the Maven repository. * Page store: opening a large database was slow if it was not closed before. * Page store: new write and read counters in the meta data table. Use SELECT * FROM INFORMATION_SCHEMA.SETTINGS WHERE NAME IN( 'info.FILE_WRITE_TOTAL', 'info.FILE_WRITE', 'info.FILE_READ', 'info.CACHE_MAX_SIZE', 'info.CACHE_SIZE') * The SQL syntax is documented using (railroad) diagrams. The diagrams are HTML. * The documentation is no longer available in Japanese because the translation was too much out of sync. Please use the Google translation instead. * Certain queries were not sorted if subselect queries were involved * More bugs in the server-less multi-connection mode have been fixed: 90097 The database is read only, caches must be cleared on reconnect, etc. 0115NAME IS NULL2009/11/16(月) 02:35:28ID:gLSep6AL Version 1.2.123 (2009-11-08)
* Page store: new databases can not be opened with older versions. * Page store: updating large rows (rows with more than 2000 bytes of data) could corrupt the database. * Page store: inserting very large rows failed with ArrayIndexOutOfBoundsException. * When using multi-threaded kernel mode, setting disabling locking (LOCK_MODE=0) will now throw an exception. At this time this combination will result in corruption when multiple threads try to update the same table. * The fulltext search methods and fields are now protected instead of private, to make the classes more easily extensible. * The Lucene fulltext search now also returns the score. * New function SCOPE_IDENTITY() to avoid problems when inserting rows in a trigger. * Statement.getGeneratedKeys() returned the wrong value if a trigger changed the identity value after inserting the row. * Improved error messages: identifiers and values are now quoted. * Improved error message when casting a value failed: the column name and type is included in the message. * Improved support for GAE for Java thanks to Vince Bonfanti. 0116NAME IS NULL2009/11/18(水) 23:34:29ID:bJWt2MSL Recursive Queryに対応してほしい。 0117NAME IS NULL2009/11/21(土) 06:22:05ID:q6pvm/q4 Version 1.2.124 (2009-11-20)
* Clustering: there is now a way to detect which cluster instances are running. * ConvertTraceFile: the SQL statement statistics are better formatted (newline are removed). * The file lock thread is now stopped when the database is closed. * Issue 140: the Script tool now supports writing to a stream. * Issue 138: the trace output of Statement.execute(String, int) and executeUpdate was incorrect. * Page store: new databases can not be opened with older versions. * Page store: multi-column indexes didn't work if the cache was very small. * Page store: opening a database could theoretically result in an endless loop. * Page store: adding large indexed columns could get very slow. * Page store: after a duplicate key exception, an ArrayIndexOutOfBoundsException could be thrown (only for very large rows). * Page store: the recover tool sometimes generated a script file that contained duplicate data. * Page store: sometimes opening a read-only database failed. * Page store: opening a database sometimes failed if large rows where updated, or if a table was truncated before. * Page store: when using a very small page size (128 bytes or smaller), writing a large row could result in an endless recursion. This is only a theoretical problem, as the page size is 2 KB. * Page store: getting the min value from a descending index with NULL entries could return the wrong result. * Page store: improved auto-recovery after power failure. * The JDBC client did not detect that it was not talking to an H2 server. This could result in strange exceptions when trying to connect to another kind of server. * User defined functions can be created with source code. Example: CREATE ALIAS HI AS 'String hi() { return "Hello"; }' * Database file lock: the exception "lock file modified in the future" is longer thrown; instead, opening the file will be delayed by 2 seconds. * Inserting LOBs got slower each time the process was restarted. It could loop endlessly after about 1000 process restarts. * Issue 117: Multi-version concurrency: concurrent MERGE statements now work. * Improved read-only database detection. 0118NAME IS NULL2009/12/09(水) 23:10:14ID:OerOAmFx Version 1.2.125 (2009-12-06)
* Lucene fulltext search: the Lucene field names now match the table column names, except if the column names start with _ (in which case another _ is prepended). Unfortunately this change means existing fulltext indexes need to be re-built. * The shell tool now has a very simple statement history. * The zip file system implementation now supports the '~' home directory prefix. Example database URL: jdbc:h2:zip:~/test.zip!/test * Right outer joins on tables that were already 'inner joined' was processed incorrectly. * Temporary files from LOB objects were not deleted early enough when using the server mode. * Trying to alter a temporary table threw a strange exception. It is still not possible to do that, but the exception message is better now. * When the system property h2.maxMemoryRowsDistinct was set, and using SELECT DISTINCT, the temporary table was not correctly dropped. This could cause problems in recovery when the process was killed. * Trigger that are called before a select statement are now supported. This allows to create tables that work like materialized views. * Non-row based triggers were called even if the action didn't match the declared action (INSERT triggers were also called when deleting rows). This has been changed. The MERGE statement calls both INSERT and DELETE triggers. * Statements with IN(..) conditions could produce the wrong result or a data conversion error (since version 1.2.120). Examples: index on id, name, condition: id=1 and name in('Hello', 'x'); index on id, query: select * from (select * from test) where id=1 and name in('Hello', 'World'). * The CompressTool was not multithreading safe. Because of this, the following database operations where also not multithreading safe (even when using different databases): the SCRIPT command (only when using compression), the COMPRESS function, and storing CLOB or BLOB data (only when compression is enabled). * The compression algorithm "LZF" is now about 33% faster than before when compressing small block (around 2 KB). It is much faster than Deflate, but the compression ratio is lower. Some of the optimizations are from Sam Van Oort, thanks a lot! * Compressing large blocks of data didn't work when using the "Deflate" compression algorithm. Compressing a lot of data could run out of heap memory. * The test cases don't access the file system directly, this simplifies GAE for Java testing. Thanks to Vince Bonfanti. * More bugs in the server-less multi-connection mode have been fixed. * When running against an old database, the SCRIPT statement could generate a SQL script that contained duplicate indexes (PRIMARY_KEY_E). * JdbcConnectionPool.getConnection() could throw a NullPointerException. * User defined functions: the source code is now available using SELECT SOURCE FROM INFORMATION_SCHEMA.FUNCTION_ALIASES. * User defined functions with source code didn't work after re-opening the database. * The newsfeeds are now Atom 1.0 standard compliant. * The database is now closed after an out of memory exception, because the database could get corrupt otherwise. * Better error message if both AUTO_SERVER and SERIALIZED parameters are set to TRUE. * Drop table did not delete lob files in old file store (not PAGE_STORE). 0119NAME IS NULL2009/12/11(金) 00:32:10ID:??? よーがんばっとるみたいだね。 0120NAME IS NULL2009/12/19(土) 15:58:51ID:kF2PnjXl Version 1.2.126 (2009-12-18) http://www.h2database.com/html/changelog.html0121NAME IS NULL2010/01/17(日) 16:39:50ID:vXAIrE+O Version 1.2.127 (2010-01-15) http://www.h2database.com/html/changelog.html0122NAME IS NULL2010/01/19(火) 02:12:07ID:NE/IZJ6Y ちょっとスレ違いな話かもしれませんけど、 RDBの最適化について質問させてください。
・Older versions of H2 (version 1.2.127 and older) could not connect to a new version (version 1.2.129 and newer). The connection blocked when trying to connect. Now the connection no longer blocks, instead a SQL exception is thrown.
・In versions 1.2.129 and 1.2.130, a database could not be opened sometimes after dropping tables or indexes, and then creating new indexes for existing tables. The exception contained the text "parent not found" (version 1.2.129) or "Table not found" (version 1.2.130).
今回のバージョンアップは、下位バージョンとの互換性という点では要注意っぽいね。 0131NAME IS NULL2010/03/11(木) 13:37:02ID:??? 画像ファイルをJavaでString(byte[])に変換して VARCHAR(max)にいれてみたいんだけど H2DBのVARCHARってどのくらい入れられる? MByteのデータ入れられるといいんだけど。。。 0132NAME IS NULL2010/03/13(土) 15:35:45ID:??? なぜVARCHAR? BINARYかBLOBにしとけよ 0133NAME IS NULL2010/03/13(土) 21:25:28ID:??? 固定長の方がいいのか 0134NAME IS NULL2010/03/14(日) 18:07:22ID:???>>131 http://www.h2database.com/html/datatypes.html#varchar_type > The maximum precision is Integer.MAX_VALUE. ※Integer.MAX_VALUEは 2^31-1 ね。
・The implementation of a Java to C (source code level) converter has been started. The plan is: it should be possible to convert H2 (or a part of it) to C so that the database can be run without a JVM. This will be a long term project (it may take a year or so).
がんがれー! 0140NAME IS NULL2010/03/23(火) 22:12:52ID:??? ディスクIOがボトルネックになっている場合は、 256上限のカラムをバイナリ指定で1バイトとかにした方が良いのかな? インデックス効きづらくなったりする? 0141NAME IS NULL2010/03/23(火) 22:15:30ID:??? レコードが大量にあるテーブルの話ね 0142NAME IS NULL2010/03/24(水) 01:47:06ID:??? 試してみたけど、検索遅い気がする 0143NAME IS NULL2010/03/26(金) 02:16:18ID:??? Cで書き直したら他のDBとガチ勝負になるな 0144NAME IS NULL2010/03/31(水) 17:00:20ID:???>>139 Cで動かすと重くなったりしそうなんだけど DBって結構低レベルなロジックが多いからパフォーマンス出たりするかな? GCがあって、ネイティブが書き出せるGoへのコンバートとか 出来たら面白いような気もする。 0145NAME IS NULL2010/04/11(日) 22:45:02ID:K0jggL2q Version 1.2.133 (2010-04-10) http://www.h2database.com/html/changelog.html0146NAME IS NULL2010/04/27(火) 00:28:12ID:ncuyX2pq Version 1.2.134 (2010-04-23) http://www.h2database.com/html/changelog.html0147NAME IS NULL2010/05/10(月) 17:05:42ID:??? Version 1.2.135 (2010-05-08) http://www.h2database.com/html/changelog.html0148NAME IS NULL2010/05/22(土) 00:07:55ID:YYhA0N2D javaから起動終了したいんだけど シャットダウンでExceptionになるんだ。 間違ってる?