2025年12月 3日 (水)

2025年11月にリリースした曲 / DTM / GarageBand

Apple Loopとチョップで頑張るDTM 
11月は次の2曲でした:)


∞ Loops / N + 1 Loops
粛々と仕事をやっつける時のw BGM用、無限ループさせるループw

Risky Loops / N + 1 Loops
Inspired by 坂本龍一 feat. Iggy Pop / Risky Extended Mixのドラム音w なのですが、まあ、こんなもんです。


では、また。

Enjoy DTM and GarageBand!

| | | コメント (0)

2025年11月 2日 (日)

2025年10月にリリースした曲 / DTM / GarageBand

さて、
10月のGarageBandのDTMは以下のダブバージョンを含む3つ。

Mind Game Loops ver. 1.2 / N + 1 Loops
Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテストで試した音声をGarageBandのトラックに組み込んでみたのが10月最初にリリースしたループ!


Autumn Night Rain Loops / N + 1 Loops
昨年も作った秋っぽい何かシリーズでw 1つ。


Crisp Autumn Day Loops ver. 1.6 / N + 1 Loops
- Dub version of Autumn Night Rain Loops -

そして、Autumn Night Rain Loops / N + 1 Loopsのダブバージョン。テンポを落としてドラムトラックなど合わせて変更してみたり。


では、また。

Enjoy DTM and GarageBand!

| | | コメント (0)

2025年10月21日 (火)

ミックさんの [改訂新版] SQL実践入門 を査読でお手伝いした話

査読でお手伝いしていた、ミックさんの [改訂新版] SQL実践入門

出来上がった書籍を頂きましたー。 :)

"高速でわかりやすいクエリの書き方”大切ですよね。

Img_7806_20251021112901



| | | コメント (0)

2025年10月 2日 (木)

2025年9月にリリースした曲 / DTM / GarageBand

ということで、前月のDTM

Dub version含め勢い余ってw、4曲


Glass Kabuki Loops / N + 1 Loops - Dub version of Kabuki Loops -
Glass Heart on Netflix ( • 佐藤健 × 宮﨑優 - 伝説のどしゃ降りセッション🎹🥁 | グラスハート | Net... )観てたら面白かったので、inspired by Glass Heartとうい感じのDTM を。


Even so, loops! : N + 1 Loops - Dub version of Kabuki Loops -

それでもみんな大好きぐるぐる系みたいな)。ネタから思いついただけのタイトルというか、
別の曲にしようと思いドラムトラック作ってベーストラック載せた勢いだけで作ったこれも、Dub Version.


A dream one day Loops / N + 1 Loops

なんか落ちる夢って見たことないですかね。そんな感じの。
Beat Saberのゲーム動画のサウンドトラックだけ置き換えるためにチョっチョッと作ってみたやつ。


Sequel to a dream one day Loops ver. 1.1 / N + 1 Loops

全曲の勢いで、夢の続きみたいな感じで。


週一で作ってないか。。。w

Enjoy DTM and GarageBand!

ではまた。

| | | コメント (0)

2025年10月 1日 (水)

Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテスト

Siriの日本語音声2の女性の声を利用して、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」っぽい音声Loopを作るテスト

ということで、

Siriの日本語音声2の女性の声を聞いてたら、今際の国のアリスの「ゲームを開始します」、「ゲームオーバー」とかそれ風にText to SpeechとGarageBandつかえば出来そうということで試してみた。

事前に環境設定で、Siriの音声から日本語、声2 の女性の声をロードしておく必要があります。

システム設定→アクセシビリティ→読み上げコンテンツ→読み上げ言語→ポップアップメニュー→日本語、→システムの声→ポップアップメニュー→声の管理→サイドペイン→日本語→日本語声2→OKボタン

20251001-175237

20251001-175249

メモ帳でもなんでも良いので、テキストエディタを開いて、以下のように入力して、「スピーチ」を選ぶだけ。

20251001-174448

上記を再生して録音。mp4ファイルをGarageBandに取り込み
GarageBandに組み込まれているPlug-inのSpace Desingerを使って屋内のホール空間のようなリバーブをかけて、イコライザで音の調整をしたのが以下の動画


| | | コメント (0)

2025年9月30日 (火)

帰ってきた! 標準はあるにはあるが癖の多いSQL #19 - c_alias の癖(おまけ)

書き漏らしていたことに気づいたので、
今日のテーマは、

帰ってきた! 標準はあるにはあるが癖の多いSQL #18 - t_alias と c_alias にも癖が出る

の癖のおまけw

Oracle Database、PostgreSQL、MySQLの表エイリアスと列エイリアスの文法の癖の違いを思い出してもらった上で、今日の列エイリアスの癖も合わせて覚えておくと良いかもしれません。

とは言え、サブクエリで該当構文を使うことはあまり無さそうな気はします。
どちらかというと、表値コンストラクタの記述で効果的な構文だと思うので。。。(表値コンストラクタネタは、別エントリーにて)

 

まず、帰ってきた! 標準はあるにはあるが癖の多いSQL #18 - t_alias と c_alias にも癖が出るの列エイリアスの癖の復習から。

 

インラインビュー(サブクエリ)の列エイリアスを以下のような構文で書けるDBと書けないDBを見てみましょう。

SELECT
*
FROM
(
SELECT
empno
, 'a'
FROM
emp
) t01 (empno, dummy_col)
;

 

Oracle Database 23ai ver. 23.8 Oracle Databaseではこの構文は許されていませんよね! 表値コンストラクタがサポートされた流れで通常のサブクエリでも使えるようになるかもしれませんが、、、、。

SCOTT@localhost:1521/freepdb1> select banner_full from v$version;

BANNER_FULL
--------------------------------------------------------------------------------
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.8.0.25.04

SCOTT@localhost:1521/freepdb1> l
1 SELECT
2 *
3 FROM
4 (
5 SELECT
6 empno
7 , 'a'
8 FROM
9 emp
10 ) t01 (empno, dummy_col)
11*
COTT@localhost:1521/freepdb1> /
) t01 (empno, dummy_col)
*
行10でエラーが発生しました。:
ORA-03048: SQL予約語'('は、'..., 'a'
FROM
emp
) t01 'の後では構文的に有効ではありません ヘルプ:
https://docs.oracle.com/error-help/db/ora-03048/

 

 

続きを読む "帰ってきた! 標準はあるにはあるが癖の多いSQL #19 - c_alias の癖(おまけ)"

| | | コメント (0)

2025年9月 3日 (水)

2025年8月にリリースした曲 / DTM / GarageBand

Natsu No Kabuki Loops ver.1.3 - Dub version of Kabuki Loops - / N + 1 Loops
8月は、他のことで忙しくて、時間取れなかったこともありますがwNatsu No Kabuki Loops ver.1.2 -> Natsu No Kabuki Loops ver.1.3へのマイナーバージョンアップのみでした。


そろそろガレバン、メジャーアップデートとかしないのだろうかw

ではまた。

Enjoy DTM, GarageBand and Apple Loops!

| | | コメント (0)

2025年8月30日 (土)

Oracle VirtualBox 7.2 introduces support Microsoft Windows for Arm

Oracle VirtualBox 7.2 introduces support for macOS on Apple Silicon and Microsoft Windows for Arm

というアナウンスも出ていたので、Windows 11 ARMを試してみた。

問題なく起動 :)

oracle@Mac-Studio ~ % . ./print_env.sh

*** mac info. ***
ProductName: macOS
ProductVersion: 14.7.7
BuildVersion: 23H723

*** maxOS ver. ***
Model Name: Mac Studio
Chip: Apple M1 Ultra
Total Number of Cores: 20 (16 performance and 4 efficiency)
Memory: 64 GB

*** VirtualBox ver. ***
7.2.0r170228
oracle@Mac-Studio ~ % VBoxManage list --platform-arch=arm vms | grep 'Windows'
"Windows 11 ARM64 " {2c141f66-d7f4-4cef-9a63-96524ab850c7}
oracle@Mac-Studio ~ % VBoxManage list runningvms
"Windows 11 ARM64 " {2c141f66-d7f4-4cef-9a63-96524ab850c7}

Windows11_arm_on_virtualbox-apple-silico


続きを読む "Oracle VirtualBox 7.2 introduces support Microsoft Windows for Arm"

| | | コメント (0)

2025年8月29日 (金)

x86 GuestOS on VirtualBox for Apple Silicon / ARM. Rebooted. :)

一年ぐらい前、ARM版 7.1 Betaがリリースされ、ARM版7.0のテストビルドで起動していたx86 GuestOS起動ができなくなった。。。という話のその後です。

7.0.9 for Apple Silicon / ARMで Intel版VirtualBoxから移行して、起動できた〜〜ニヤニヤしていた。。。
VirtualBox TestBuild 7.0.97r163779 (2024-07-04T18:53:02Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録

のですが、

7.1にアップデートしたら。。。。起動しなくなっちゃったんですよ....
VirtualBox TestBuild 7.1.0_BETA1r164292 (2024-08-07T18:27:07Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録


ずーーーーっと起動しなかったので、もうしばらく無理なのだろうかと、おもい、ARM64ネイティブなGuestOSで遊び始めたあと、
Oracle Database 23ai 23.8 (aarch64) on Oracle Linux 8u10 (aarch64) on VirtualBox 7.1 for Apple Silicon 始動 w


なにげに、とあるスレッドをだらだら読んでいると。。。。。なに!!!〜。もしかして、デフォで起動しない設定に戻されてしまったのか。。。
ということに気づいたわけです! はいw
Discuss the VirtualBox 7.1.0_BETA1 release here
https://forums.virtualbox.org/viewtopic.php?p=549283#p549283

上記スレッドで対処方法がコメントされていたことに全く気づかず、7.1以降使えなくなったままだったのかと思い込んでいただけでした。気づくの遅いw

ということで、Apple Silicon な VittualBoxで x86アーキテクチャのGuestOSのOracle Database/MySQL/PostgreSQLで遊ぶ環境が復活しました。

VBoxManage setextradata global "VBoxInternal2/EnableX86OnArm" 1

を設定しないといけないらしい、これを設定すると、”Dev Preview”マークがGUIに現れると!

結果から先に言っておくと、以下のリリース、7.2でも、x86_64のOracle Databaseは、ORA-3113で起動せず。
MySQL/PostgreSQLは起動しました。ちょっと先祖帰りした感じではありますね。とはいえ、x86 GuestOSも起動できる環境が復活できたので、起動確認もrebootさせることにしましたw

続きを読む "x86 GuestOS on VirtualBox for Apple Silicon / ARM. Rebooted. :)"

| | | コメント (0)

2025年8月27日 (水)

カウンターが150万回を超えた記念

カウンターが150万回を超えた記念スクリーンショットw

20250826-175729

| | | コメント (0)

2025年8月24日 (日)

帰ってきた! 標準はあるにはあるが癖の多いSQL #18 - t_alias と c_alias にも癖が出る

Previously on Mac De Oracle
前回は、ANY_VALUE()、癖ないじゃんという話でした。

 

今日は、

t_alias と c_alias 

なんて言うと、バイオハザードがちょっと浮かぶのは私だけか。。(t-virusっぽい響きがあるだけだがw)

ということで、唐突ですがw、

SCOTT@localhost:1521/freepdb1> select * from dept order by deptno;

DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON

経過: 00:00:00.00
SCOTT@localhost:1521/freepdb1> select * from emp order by deptno,empno;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 81-06-09 2450 10
7839 KING PRESIDENT 81-11-17 5000 10
7934 MILLER CLERK 7782 82-01-23 1300 10
7369 SMITH CLERK 7902 80-12-17 800 20
7566 JONES MANAGER 7839 81-04-02 2975 20
7788 SCOTT ANALYST 7566 87-04-19 3000 20
7876 ADAMS CLERK 7788 87-05-23 1100 20
7902 FORD ANALYST 7566 81-12-03 3000 20
7499 ALLEN SALESMAN 7698 81-02-20 1600 300 30
7521 WARD SALESMAN 7698 81-02-22 1250 500 30
7654 MARTIN SALESMAN 7698 81-09-28 1250 1400 30
7698 BLAKE MANAGER 7839 81-05-01 2850 30
7844 TURNER SALESMAN 7698 81-09-08 1500 0 30
7900 JAMES CLERK 7698 81-12-03 950 30

14行が選択されました。

 

上記の表が、Oracle database/MySQL/PostgreSQLにあったとします。というか、あります。

 

この時、2表を結合(外部結合でも内部結合でも良いです)する際、DEPT表をインラインビュー化し、そのビューに表エイリアスと列エイリアスを記述する場合、どのような構文が浮かびますか?

t_alias = 表エイリアス
c_alias = 列エイリアス

と言うのが今日の癖のテーマです:)

 

よくあるのは以下のな感じ. 列、表 の直後に列エイリアス、表エイリアスを記述する。見落としもつけ忘れも発生しにくく、可読性も良いと思います。

SELECT
e.empno
,e.ename
,d.department_name
,d.department_loc
FROM
emp e
INNER JOIN
(
SELECT
deptno
,dname AS department_name
,loc AS department_loc
FROM
dept
) d
ON
e.deptno = d.deptno

;

 

ところが、以下のような構文も可能なrdbmsもあります。はい。これが今日の癖! www

FROM table_reference [AS] alias ( column1 [, column2 [, ...]] )

参考) PostgreSQL 17 / 7.2. テーブル式 / 7.2.1.2. テーブルと列の別名
https://www.postgresql.jp/document/17/html/queries-table-expressions.html#QUERIES-TABLE-ALIASES

SELECT
e.empno
,e.ename
,d.department_name
,d.department_loc
FROM
emp e
INNER JOIN
(
SELECT
deptno
,dname
,loc
FROM
dept
) d (
deptno
, department_name
, department_loc
)
ON
e.deptno = d.deptno
;

 

 

続きを読む "帰ってきた! 標準はあるにはあるが癖の多いSQL #18 - t_alias と c_alias にも癖が出る"

| | | コメント (0)

2025年8月22日 (金)

帰ってきた! 標準はあるにはあるが癖の多いSQL #17 - ANY_VALUE() ってなかなかいいじゃん、癖無さそう!

さて、
今回は久々に、標準はあるにはあるが癖の多いSQLシリーズです! 

データが小さいとその価値はほぼわからないかもしれませんが、ひょんなところで出会ってしまった! と、いうような状況で役立つかもしれませんwwww

今日のお題は、ANY_VALUE()関数。 集約関数の仲間です:)

MySQLやOracle Databaseのマニュアルでは使い所を理解しやすい解説があります。おすすめです。
一方、PostgreSQLのマニュアルシンプルすぎる解説ゆえ、この関数はなに? なにが美味しいの? みたいな顔になってしまうかもしれません。がw、ググってみてください、いろいろ見つかります!

この関数に出会ってよかった! ということを思いながらw
以下の曲をBGMにして眺めてみてください:)

ラブ・ストーリーは突然に / 小田和正


少量のデータだとその良さに気づきにくいのですが、万が一の時は、ANY_VALUE()集約関数を思い出してみてください。
リソース消費は数が多くなるとボディーブローにはなるので、リソース使用量削減に重箱の隅をつつくようなことしないといけないとかw そんな時にも役立つかも。。。しれないです。


参考)

Oracle / ANY_VALUE() - 19cからサポートされました
https://docs.oracle.com/cd/F19136_01/sqlrf/any_value.html

MySQL / ANY_VALUE() - 5.7からサポートされました
https://dev.mysql.com/doc/refman/8.0/ja/miscellaneous-functions.html#function_any-value

PostgreSQL / ANY_VALUE() - 16からサポートされました
https://www.postgresql.jp/document/17/html/functions-aggregate.html


環境

HostOS : macOS Sonoma 14.7.7 (arm64)
VirtualBox 7.1 (arm64)

GuestOS : Oracle Linux 8u10 (arm64)
 Oracle Database 23ai 23.8 (arm64)
 PostgreSQL 17.5 (arm64)
 MySQL 8.4.6 (arm64)

テストケース

テストケース1)

集約する列データ長が長がーーーい

テストケース2)

集約する列データは短めでもデータ量が多いケース

の2つを用意しました。
データ量はどちらも多めにしました。理由は、集計関数やGROUP BYの性能差分はデータ量が少ないと差分が見にくいためです:)
これぐらいデータにして、やっと、ふむふむと頷ける差分が見えるのではないかと思います。

計測は3回実行しています(1回目には諸々ノイズが乗りやすいので参考程度にしています)

 

では、先に結果から。
全体的に ANY_VALUE()が軽めの傾向として出てきているのは間違いないと思います。あえてそういう目的で追加してきた関数ですし。MySQLやOracle DatabaseのマニュアルではANY_VALUE()集約関数についての解説もわかりやすいとおもいます。
ANY_VALUE()の用途が広く認知されれば、可読性向上という意味もきっちり出てきそうな気はします。(個人的にはw。今は微妙は感じを持っている方は多いと思いますが、非集約列をGROUP BY句に記述するのも、MIN/MAX集約関数を使うのも可読性という意味では微妙だと思っているので、そういう目的の関数の登場で方向は定まるのではないかと。。。。w)
PostgreSQLのマニュアルに目を向けると、他の関数の説明とのバランスもあると思うのでw、さらりと書かれていて、初めて見た方は、君は何? 
という感じになりそうではあるのですが、ググると結構情報も多くなってきたので何ものかを知るのに困ることもないと思います。

 

個別のまとめ

Oracle Database 23ai free

環境による差異は多少ありそうですが、GROUP BYで対処する場合とANY_VALUE()で対処する場合では、列サイズが長い場合にはANY_VALUE()の方が効果的に対処できそうですね。CPUに優しくなっています。
一方該当列の列サイズが比較的短い場合には、GROUP BY / ANY_VALUE()大きな差はでにくです。ANYU_VALUE()の認知度次第ですが、この手のハンドリングのための記述として認知度があがると、可読性としては向上しそうな気がします。

注)軽かった順に列挙してます。

テストケース1)

ANY_VALUE() -> GROUP BY句で対処 -> MAX()

テストケース2)

ANY_VALUE() -> GROUP BY句で対処 -> MAX()

 

PostgreSQL

PostgreSQLでは、やはり、ANY_VALUE()が早いですが、MAX()とかなり近い結果となり、GROUP BYが最も遅いという結果になりました。
面白い。

テストケース1)

ANY_VALUE() -> MAX() -> GROUP BY句で対処

テストケース2)

ANY_VALUE() -> MAX() -> GROUP BY句で対処

 

MySQL

MySQLではすべてが、Aggregate using temporary table となっていたので条件的には同じ状態で比較できた分わかりやすい結果になっていました。
MySQLでもこの手のケースでANY_VALUE()を利用しておいた方がお得でしょうね。

テストケース1)

ANY_VALUE() -> MAX() -> GROUP BY句で対処

テストケース2)

ANY_VALUE() -> MAX() -> GROUP BY句で対処

 

続きを読む "帰ってきた! 標準はあるにはあるが癖の多いSQL #17 - ANY_VALUE() ってなかなかいいじゃん、癖無さそう!"

| | | コメント (0)

2025年8月 2日 (土)

2025年7月にリリースした曲 / DTM / GarageBand

Kakko Loops / N + 1 Loops
祭りのお囃子を聴いていたら浮かんだまでは良かったが、GarageBandのLoopに和楽器系のものがない!!!w

でBASS drumとSnareで大太鼓、小太鼓を、それ以外に鐘と横笛があるのだけど、東南アジア系パーカッションとフルートと
いい感じSpace Designer のエフェクトで空間に奥行きをだしつつw



Kabuki Loops / N + 1 Loops
Kakko Loopsで和風なにかw を作りたいと思いw
浮かんだのか歌舞伎のLoopをつかったEDM

同時に一風堂のRADIO COSMOSが浮かんだので、それっぽい何かにしたいと!

そしてこんなのが出来上がった:)


Natsu No Kabuki Loops ver.1.2 - Dub version of Kabuki Loops - / N + 1 Loops
悪ノリついでに、Kabuki Loops / N + 1 Loopsのドラムトラックを活かしつつも、Dub Versionにして、夏の歌舞伎風?な感じにした



では、また。

Enjoy DTM and GarageBand!

| | | コメント (0)

2025年7月28日 (月)

Oracle Database 23ai 23.8 (aarch64) on Oracle Linux 8u10 (aarch64) on VirtualBox 7.1 for Apple Silicon 始動 w

長らく、Apple Silicon版のVirtualBoxへx86_64のVMをインポートして利用できるエミュレーション機能が正式にリリースされることを期待していたのですが、昨年のある時期以TestBuildsからも降消えてしまい、それ以降、NOT SUPPORTのままとなりました。
その途中経過は以下のエントリーにてご確認ください。

 

以下、IntelMacのVirtualBoxのx86_66のVMをApple Siliconのarm版 VirtualBoxにインポートして起動できるようになるという話を聞いた後、TestBuildsを使って起動確認などを気が向いた時に行っていた記録エントリーです。
Oracle Linux 8 and MySQL 8.0.32 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160167
MySQL 8.0.32 , PostgreSQL 13.4 and Oracle Database 21c on Oracle Linux 8 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r160702
MySQL 8.0.32 , PostgreSQL 13.6 and Oracle Database 21c on Oracle Linux 8.5 on VirtualBox for Apple Silicon Test Build 7.0.97_BETA5r161709
MySQL 8.0.36 , PostgreSQL 13.14, Oracle Database 21c, Oracle Database 23ai on VirtualBox for Apple Silicon Test Build 7.0.97_BETA r162957
VirtualBox TestBuild for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 / 7.0.97r162957(2024/4/26) / 7.0.97r163029(2024/5/3)
VirtualBox TestBuild 7.0.97r163376 (2024-05-28T15:08:56Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163425 (2024-06-05T13:13:46Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.0.97r163606 (2024-06-21T11:55:16Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox TestBuild 7.1.0_BETA1r164292 (2024-08-07T18:27:07Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録
VirtualBox-7.1.0_BETA2-164697 (2024-09-06T20:27:41Z) for macOS/ARM64における現時点でのOracle Database 21cの起動、停止時間の記録 (VM起動せず)

なんか、途中まではいい感じだった気もするが。。。

で、
ずーーーーーっと、そのままなのもつまらないのと、arm64対応のバイナリーもダウンロードできるようになってきたので、重い腰をあげてw
Oracle Database 23ai 23.8 (aarch64) on Oracle Linux 8u10 (aarch64) on VirtualBox 7.1 for Apple Silicon を始動させることにしました。

 

ただ、どうしても 古いOracle Databaseで確認したり遊びたくなることもあるので、IntelMacを閉じた環境で保存して遊べる環境だけは残してあります。
Apple Silicon版VirtualBoxで万が一w、x86_64 VMをインポートして使えるエミュレーション機能が復活....するかも....しれないしw

 

ダウンロード、および、マニュアルなどURLを貼って起きますね。
(マニュアルの通りに実施すればすんなりインスコできるので、一読することをお勧めしまっす:)
Oracle Linux Arm (aarch64) ISOs https://yum.oracle.com/oracle-linux-isos.html

Oracle Linux 8 / Installing Oracle Linux Installing Oracle Linux

Oracle Database 23ai Free Platforms / Oracle Linux 8 for Arm (aarch64) https://www.oracle.com/database/free/get-started/

Oracle Database / Release 23 / Installation Guide for Linux https://docs.oracle.com/en/database/oracle/oracle-database/23/xeinl/installing-oracle-database-free.html#GUID-46EA860A-AAC4-453F-8EEE-42CC55A4FAD5__RPM-LINUX-ARM

 

ホストマシンとVirtualBoxの情報

oracle@macdeoracle ~ % ./print_env.sh

*** mac info. ***
Model Name: MacBook Air
Chip: Apple M2
Total Number of Cores: 8 (4 performance and 4 efficiency)
Memory: 24 GB

*** macOS ver. ***
ProductName: macOS
ProductVersion: 15.5
BuildVersion: 24F74

*** VirtualBox ver. ***
7.1.12r169651

続きを読む "Oracle Database 23ai 23.8 (aarch64) on Oracle Linux 8u10 (aarch64) on VirtualBox 7.1 for Apple Silicon 始動 w"

| | | コメント (0)

2025年7月 4日 (金)

実行計画は, SQL文のレントゲン写真だ! No.67 / AI Vector Search - VECTOR INDEX HNSW SCAN のバリエーション

Previously on Mac De Oracle
前回は、VECTOR INDEX はどこ?、見積もりサイズだとそれなりのサイズだったのに... の謎を探るべく、我々は洞窟の奥へ向かった!(完結編)でした。
今日は、再びレントゲン写真に戻り、VECTOR INDEX HNSW SCAN のバリエーションをいくつか確認しておこうと思います。
(なかなか興味深いので、一度診ておけば、いざというときに慌てなくて済むと思います)

 

いきなりってのもあれなので、先に以下のマニュアルを一読しておくと良いと思います。マニュアルでもポイントが解説されているネタなので:) 解説しないとちょっと分かりずらい点が多いからだと思いますがw

Oracle Database 23ai / Oracle AI Vector Search ユーザーズ・ガイド / HNSW ベクトルインデックスのオプティマイザプランのバリエーションを解説している章があります。なかなか興味深い。
おそらく、表には積極的に登場してこない補助表が、突然実行計画に現れることへの戸惑いと実行計画の読み方にちょっとした癖がある点の緩和と実行計画のバリエーションごとのメリデメを理解してもらうためにも解説が必要だったのだろうなぁ。と想像。
Oracle Database / Release 23 / Oracle AI Vector Search User's Guide / Optimizer Plans for HNSW Vector Indexes

INMEMORYな索引なのに、OperationにINMEMORYというキーワードが無くて、おや? と違和感があったり、ちょっとめんどくさい癖があるなぁと。。。w

まずは、
vector_index_neighbor_graph_reloadパラメータはCDBレベルで restart に設定した ( Oracle Database 23ai 23.6以降はデフォルトが restart になっています ) ので再起動しても vector index (HNSW) はポピュレートされメモリー上に復活しているはず。。。という確認から。

[oracle@localhost ~]$ sudo service oracle stop
[sudo] oracle のパスワード:
Stopping oracle (via systemctl):
[ OK ]
[oracle@localhost ~]$
[oracle@localhost ~]$ sudo service oracle start
Starting oracle (via systemctl):
[ OK ]
[oracle@localhost ~]$
[oracle@localhost ~]$ sqlplus scott@localhost:1521/freepdb1

...略...

Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05
に接続されました。
SCOTT@localhost:1521/freepdb1> @show_vector_mem_pool

POOL ALLOC_BYTES USED_BYTES POPULATE_STATUS
-------------------------- ----------- ---------- --------------------------
1MB POOL 369098752 236978176 DONE
64KB POOL 150994944 2686976 DONE
IM POOL METADATA 16777216 16777216 DONE

経過: 00:00:00.05
SCOTT@localhost:1521/freepdb1> @show_vector_segments

OBJ MEMBYTES
---------- ----------
0 131072
80126 239534080

経過: 00:00:00.02

 

それぞれの実行計画のpros/consはマニュアルで読んでもらうとして、
VECTOR INDEX HNSW SCAN PRE-FILTER WITH JOIN BACKから診てみましょう。

 

続きを読む "実行計画は, SQL文のレントゲン写真だ! No.67 / AI Vector Search - VECTOR INDEX HNSW SCAN のバリエーション"

| | | コメント (0)