bigmac-jp blog

web開発関連のメモ

2019-01-01から1年間の記事一覧

PHP メモ2 セッション

セッションIDがブラウザのcookieに登録されている過程を確認。 ①アクセスするサーバにindex.phpを作成

PHP メモ1 セッション

セッションファイルのパスの確認はphpinfo();で出力される。 session.save_path = /var/lib/php/session デフォルトの設定は上記のパス(/var/lib/php/session)の配下にセッションファイルが作成される。クライアントのブラウザ側でcookieにセッションidが登…

Git メモ2 コミットをまとめる

git rebase -iコマンドで複数のコミットをまとめる。コミットの単位を細かくしている場合に、git logで履歴を確認するときに、logの粒度が細かすぎて履歴が見にくいことがあります。例えば、「ユーザ一覧画面のCSV出力機能追加」の対応があったする。開発時…

Git メモ1 git stash

git管理されているプロジェクトで追加機能を開発中(①)に、緊急で別のバグ修正(②)が発生した場合など、作業中の変更内容や追加ファイルを退避することができる。 作業中のファイルを退避 ①の追加機能で下記のような変更、追加が発生。 ・既存ファイルの変更 …

MySQL メモ11 複合index

複合indexのメモ。よくありがちな開始日付と終了日付を持つテーブルを範囲検索する場合に、indexを貼る。下記SQLでテーブルを作成。 CREATE TABLE schedule ( id int(11) NOT NULL, start_date datetime NOT NULL, end_date datetime NOT NULL, PRIMARY KEY …

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が解析/最適化された後に、実際のデータをストレージファイル…

Laravel5.4 フォームリクエスト 条件バリデーション

バリデーションチェックをフォームリクエストで実装する場合に、画面入力条件によってチェック内容を動的に実装をしたく調査した。例: 入力画面側で年齢(age)が18才未満を入力した場合、親同意チェックボックス(parent_confirm)がチェックされていることを…