bigmac-jp blog

web開発関連のメモ

2019-04-01から1ヶ月間の記事一覧

Flutter メモ1 画面遷移

Navigatorクラスを使った画面遷移のメモ import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { // This widget is the root of your application. @override Widget build(BuildContext context…

MySQL メモ10 カーディナリティ

カーディナリティ カーディナリティが高い データの分布が広いデータ。プライマリーキー、ユニークキーなど。 カーディナリティが低い データの分布が狭い。例えば、性別フラグは0:女、と1:男の2パターンしかないため、カーディナリティは低い。 一般的には…

MySQL メモ9 OPTIMIZE

大量データを削除するした場合に、MySQLでは削除されたデータ分の容量が空くわけではない。 大量データを削除したテーブル内では断片化(フラグメンテーション)が発生してしまう。 また、データ抽出時にパフォーマンスにも影響が発生する。(Index統計情報が断…

MySQL メモ8 AlterTbaleの注意点

MySQL5.5以前を使っている場合は、AlterTableを実行した場合、対象テーブルへのwrite処理はブロックされる。 そのため本番環境がアクティブな状況では、運用に支障が起きる可能性が高かった。MySQL5.6以降では、OnlineDDL機能が登場し、テーブルの複製が不要…

MySQL メモ7 Indexデメリット

Indexを登録することでselect時のパフォーマンスが向上する場合があるが、 必要以上のIndexにはデメリットもある。 Insert時 新規レコード登録時にIndexの挿入が発生するため遅くなる。 Update時 更新対象のカラムにIndexが張られている場合に、Indexの更新…

MySQL メモ6 OrderBY句狙いのIndex

MySQLでソート処理が実行されるタイミングは、最終的な取得結果をソートする。 そのため、最終的な取得結果件数が多い場合はソート処理もその分遅くなってしまう。OrderBy句に指定したカラムにIndexが登録されている場合は、そのカラムはIndexによってソート…

MySQL メモ5 MVCC

MySQL InnoDBではMVCCと呼ばれる技術がつかわれている。MultiVersion Concurrency Control - Wikipedia 複数のユーザ(トランザクション)が並行して処理した場合に、処理の同時並行を失うことなく、データに整合性を保証する仕組みとなっている。https://dev.…

MySQL メモ4 ACID特性

ACID特性 MySQLに限らずその他のRDBMSでも、トランザクション処理に求める要件をACID特性と呼ばれる。 InnoDBストレージエンジンはACIDに準拠した設計になっている。 "A" Atomicity(原子性) トランザクション内での処理がすべて実行されるか、すべて実行され…

MySQL メモ3 InnoDB最低限の設定(バッファープールサイズ)

バッファープール InnoDBでは登録されているデータとIndexをメモリ上にキャッシュすることで、ディスクへのI/Oを抑える仕組みがある。データとIndexをバッファープールと呼ばれる領域にキャッシュさせることが、チューニングの第一歩となる。 理想的には、バ…

MySQL メモ2 InnoDB最低限の設定(スロークエリ編)

MySQLをインストールした場合に、最低限の設定設定(チューニング編)をメモしておく。 スロークエリ設定 MySQL :: MySQL 5.6 リファレンスマニュアル :: 5.2.5 スロークエリーログ処理の遅いクエリを見つけるために、スロークエリログの出力が大切になる。 設…

MySQL メモ1 InnDBとは

MySQLを使っていると一度は"InnoDB"のキーワードを聞くと思います。 InnoDBはストレージエンジンの1つで、MySQL5.5以降のデフォルトのストレージエンジンとなります。 ストレージエンジンは、SQLが解析/最適化された後に、実際のデータをストレージファイル…