blogこの広告は、90日以上更新していないブログに表示しています。「別トランザクションでINSERTされたデータをこのトランザクションでSELECTしたらどうしよう....」と不安になってしまいました。そこでトランザクションの分離レベルについて調べたのでまとめていきたいと思います。トランザクションとはトランザクションとは、SELECTやUPDATEなど単一または複数のSQLクエリを含む一連の処理の単位を指します。この単位でコミットやロールバックをする事ができます。トランザクションが完了すれば障害があってもデータは保持される分離性という性質から、トランザクションは他トランザクションの変更の影響を受けないように互いに分離されています。この分離性は分離レベルとして段階に分けられており、用途に応じて調整する事ができます。分離レベルとはトランザクションの変更が他のトランザクションでどのように見えるのか、トランザクション同士の影響レベルのことです。READがデフォルトに採用されています。UNCOMMITTEDコミットされていない更新(UPDATE)・追加(INSERT)が他のトランザクションから見えてしまう状態です。そのため、ダーティリード(コミット前のデータを参照する現象)を引き起こす可能性があります。Serverコミットされた更新(UPDATE)・追加(INSERT)が他のトランザクションから見えてしまう状態です。コミット前のデータは参照できないのでダーティリードは起こりませんが、コミット後のデータは参照できるため、アンリピータブルリード/ファジーリード(コミット後の更新データを参照する現象)を引き起こす可能性があります。ーMySQLコミットされた追加(INSERT)が他のトランザクションから見えてしまう状態です。更新(UPDATE)に対しては他のトランザクションの影響を受けないため値そのものの整合性は保証されています。追加(INSERT)については影響を受けてしまうため、ファントムリード(コミット後の追加データを参照する現象)を引き起こす可能性があります。※MySQLではファントムリードを防いでいます。🚩SERIALIZABLEトランザクションにロックをかけることで直列に扱っている状態です。そのため、トランザクション内でSELECTされる値や数の整合性が保証されます。同じデータに対して複数のトランザクションが変更を行う場合、一方のトランザクションは待機しければなりません。READを採用しており、さらにファントムリードも防いでいます。そのため1つのデータに対して複数のトランザクションをかけていても特に気にする必要はなさそうです。Forwardでプッシュできないことがよくあります...。そんな時にはよくリセットにお世話になるので違いをまとめていこうと思います。解決リセットとはあるコミットにリセットを行うと、その時点までのコミットをなかったことにしてくれる機能です。リセットにはソフト・混合・ハードの3種類があります。実際にリセットを行って種類の違いを見ていきます。各リセットをする状況は同じものとして行います。✧前提1まず最初のコミットをします。2次に変更を追加してコミットをします。▼ヒストリーでみると2回コミットされていることが分かります。最初のコミット時点でソフトリセットをすると▼ヒストリー上から2回目のコミットが消えています。▼内容は変更されたままで、「ステージされた変更」にファイルが入っています。最初のコミット時点で混合リセットをすると▼ヒストリー上から2回目のコミットが消えています。▼内容は変更されたままで、「ステージされていない変更」にファイルが入っています。最初のコミット時点でソフトリセットをすると▼ヒストリー上から2回目のコミットが消えています。▼内容の変更は削除されています。リセットを戻す1コミットをします。2最初のコミット時点でハードリセットをして変更を削除します。3gitのパースペクティブからリポジトリーを左クリック▶︎表示▶︎Git参照ログを選択します。4すると今までのコミットログが参照できます。リセットしたいリセットコミットを左クリック▶︎リセット▶︎ソフトを選択します。5ヒストリー上にコミットが復活し、「ステージングされた変更」にファイルが入っています。GIt参照ログからリセットをソフトリセットをすることでコミットを戻すことができました!!おわりにハードコミットだとファイルの変更も削除してしまうので基本的にはソフトコミットを使用するのが良さそうです。21:33【egit】コミットのリセットからリセットの戻し方までTweet広告を非表示にするもっと読むコメントを書く2018-05-26【Java】BigDecimalとint型Javaはじめにint型で実装していたのですが、途中で小数も扱うということになり、泣く泣くBigDecimal型に変更。そのときに使用したBigDecimalクラスのあれこれを書いていきます。小数点以下の桁この2つを保持しており、正確な計算を提供してくれます。意図しない計算が起こってしまうようです。私の場合は、小数点を使用した厳密な計算を行う必要があったのでBigDecimalを採用しました。Java好きINT型をBIGDECIMAL型に変換したい変換の方法は2つあります。BigDecimal.ZERO;BigDecimal.ZEROはスケールが0の値0を戻します。他にもBigDecimal.ONEBigDecimal.TENなどのフィールドが用意されています。divisor)計算結果の小数点を丸めたいBigDecimalの算術では、結果の小数点の表記や丸める方法も指定できるので便利です。割り算で用いられる以下のメソッドで考えてみます。1.67丸め方には他にも様々な方法があるようです。8)おわりに文系出身だからか、小数点を含む計算はちょっと避けたい部分だったのですが、調べてみると意外におもしろかったです。16:32【Java】BigDecimalとint型Tweet広告を非表示にするもっと読むコメントを書く2018-05-20【mysql】SQL文を高速化するためにEXPLAINを使うmysql業務で何万件かのデータを取得するselect文を実行したところ、、あれ?30秒もかかる!!!もっと速くならないかな〜〜と思った時にしたことをメモします。はじめに今回サンプルで使用するテーブル構成はこんな感じです。テーブルEXPLAINを使って実行計画をみる使い方は簡単です。実行したいクエリにEXPLAINをつけるだけ。user_id;すると以下のような結果が返って来ます。気になる所はあるのですが、2つに注目してみます。type:indexExtra:NULLtypeから見てとれるように、primarykeyのindexが効いているようです。byの条件を追加したクエリを実行しようと思います。user_name;すると以下のような結果が返って来ます。あら?indexが効いていません。複合indexを貼ってみることにしました。user_name);ここでもう一度実行してみます。user_name;index効いているかな、とドキドキしていると以下のような結果が返って来ました。filesort調べてみると、複合indexではwhere句を使用しないとindexが効かないらしいです、、。index)をWHERE句の検索条件として指定しないと、ソート処理においてインデックスを利用できないという点である。byを指定しない方がいいかもしれません。selectした後にsortするという方法もあります。byで4つのキーを指定しなければいけなかったので、取得後にsortしました、、。22:32【mysql】SQL文を高速化するためにEXPLAINを使うTweet広告を非表示にするもっと読むコメントを書く2017-08-06swift3でToDoリストアプリを作ってみたswiftSQL基礎に受かり気持ち的に余裕ができたのでようやくswiftの勉強を再開しました。(まだDBAがありますが、、、)今回参考にしたサイトはこちらです↓http://mosho-developer.blogspot.jp/2015/11/xcode-swifttodo.htmlストーリーボードの実装に関してはこのサイトの通りに進めていきました。今回はswift3を使用したため変更点などもあり、つまずいた点もいくつかありました。今回はその辺をまとめていこうと思います。完成形は今のところこんな感じです。❶+を押下するとテキストフィールドが現れて、テキストフィールドをクリックするとキーボードが出てきます。❷キーボード以外のところやreturnを押下するとキーボードが閉じられるようになっています。❸ADDボタンを押下すると、テーブルリストにテキストが追加されています。非選択にすることで解決!🌟改行(return)でキーボードが閉じない!!resignFirstResponderメソッドを定義しているのにreturnでキーボードが閉じないのは、delegateを指定していないからでした。Qiita🌟こんにちは、エラーこのエラーで、シュミレーターに何も表示されなくなりました。問題はストーリーボードとの接続にあったようです。controllerを右クリックすると以下のような画面が出てきます。黄色いさんかく⚠️印が出てきたらその部分に問題があります!削除してあげましょう。programming.info以上が私がつまずいた点です。delegateなど、まだまだ詳しく調べきれていない箇所が多いので、これからの課題にしていこうと思います。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。