こんにちは!
ナビゲータのEVEです。
中小企業診断士試験当日から体の調子が悪いと昨日まで言い続けていましたが、原因が分かりました。状況証拠ですが、多分コロナです。状況証拠というのは、検査をしていないから・・・。治ってから病院にいくのは間抜けですし、まっ、多分そうだっただろうと言うことでこれで終わりにしたいと思います。
試験当日までの約3、4週間、睡眠時間4〜5時間で生活し、試験2日目の前日は、3時間ぐらいで試験会場に向かったため、多分寝不足だとばかり思っていたのですが・・・。
コロナに感染したのは多分中小企業診断士試験の1日目・・・。試験2日目には頭痛がする上に目がちかちかしていましたからね・・・。健康な生活を送っていないと病気だと言うことさえ気づかないと言うことなのでしょう?
新型コロナの病状を調べて見ると、潜伏期間が1〜14日間で、感染から5〜6日で発症するというのですから、感染した翌日に発症したということになります。現在家でほとんどの時間を過ごしているため中小企業診断士試験ぐらいしか感染した場所がおもいつきません。
体が弱っていたせいでしょうか?発症までの時間が短すぎます。もしかしたら、新型コロナではないかもしれませんが、はじめての症状だったためそんなことを考えてしまいました。
昨日のブログにも書きましたが、やはり、健康は大事です。
[プログラム開発]
テーブルアンロックについて調べて見ましたが、やはり、分かりませんでした。
そこでどうするのか検討したのですが、今までEVEシステムではテーブルロックは使用しない予定なので、Prototype EVE上で実現しようかと考えていましたが、EVEシステムのデータベース関連クラスにテーブルロックと、テーブルアンロックのメソッドを追加することにしました。ChatGPTとかBingからの解答ではできないはずがないのです。
そのため、実処理を行う、EVEシステムに追加し、その関数をPrototype EVEから呼びだすことにしました。
本日テーブルロックメソッドを製造しました。明日試験をしようかなって考えています。
[テーブルロックの仕様]
PHP8、MySQL、PDOの組合せでは、以下のモードが利用可能だと、ChatGPTは言っています。
MySQLの LOCK TABLES ステートメントには、テーブルをロックするためのさまざまなモードがあります。一般的なモードには以下のものがあります。
❶READ
テーブルを読み取り専用でロックします。他のクライアントは読み取りロックを取得できますが、書き込みロックを取得することはできません。これは複数のクライアントが同時にテーブルを読み取ることを許可しますが、書き込み操作をブロックします。
❷WRITE
テーブルを書き込み専用でロックします。他のクライアントは読み取りも書き込みもできません。これはテーブルに対する排他的なロックです。
❸LOW_PRIORITY_WRITE
低優先度の書き込みロックを取得します。他のクライアントが読み取りロックを取得している場合、低優先度の書き込みロックを取得しようとするクライアントは待機します。一般的な書き込みロックよりも低い優先度です。
❹HIGH_PRIORITY_WRITE
高優先度の書き込みロックを取得します。他のクライアントが読み取りロックまたは低優先度の書き込みロックを取得している場合でも、高優先度の書き込みロックを取得しようとするクライアントは他のクライアントをブロックします。
これらのモードを使用して、テーブルに対する適切なロックを取得できます。選択肢は、特定のユースケースやアプリケーションの要件に応じて異なる場合があります。ロックモードを選択する際には、同時実行性やパフォーマンスへの影響を検討することが重要です。
なお、ChatGPTがいうには、トランザクションと併用はできないようです。使用するにしても特殊な状況でしか利用できず、今回のプロジェクトならPrototype EVEで利用するぐらいしかないと思われます。
[あとがき]
Prototype EVEの改修時以外しか利用できないとは思いましたが、テーブルロック、テーブルアンロックの機能を十二分に利用できるようにメソッドは作成します。どこで何があるか分かりませんからね・・・。今日作ったテーブルロックメソッドも、想定以上に長くなってしまいました。
多分公開してもテーブルロックのロジックは利用されないと思われるので、公開しませんが、ご要望がありましたら、公開します。
では、また!