최신판 |
당신의 편집 |
4번째 줄: |
4번째 줄: |
| ;<nowiki>데이터베이스: 시작하기</nowiki> | | ;<nowiki>데이터베이스: 시작하기</nowiki> |
| https://laravel.com/docs/11.x/database | | https://laravel.com/docs/11.x/database |
| | | {{작성중}} |
| ==소개== | | ==소개== |
| 거의 모든 최신 웹 애플리케이션은 데이터베이스와 상호작용합니다. Laravel은 원시 SQL, [[Laravel 쿼리 빌더|유창한 쿼리 빌더]], [[Laravel Eloquent|Eloquent ORM]]을 사용하여 지원되는 다양한 데이터베이스에서 데이터베이스와의 상호작용을 매우 간단하게 만듭니다 . 현재 Laravel은 5개의 데이터베이스에 대한 퍼스트파티 지원을 제공합니다: | | 거의 모든 최신 웹 애플리케이션은 데이터베이스와 상호작용합니다. Laravel은 원시 SQL, [[Laravel 쿼리 빌더|유창한 쿼리 빌더]], [[Laravel Eloquent|Eloquent ORM]]을 사용하여 지원되는 다양한 데이터베이스에서 데이터베이스와의 상호작용을 매우 간단하게 만듭니다 . 현재 Laravel은 5개의 데이터베이스에 대한 퍼스트파티 지원을 제공합니다: |
378번째 줄: |
378번째 줄: |
|
| |
|
| ==데이터베이스 검사== | | ==데이터베이스 검사== |
| <code>db:show</code>와 <code>db:table</code> Artisan 명령어를 사용하여 데이터베이스와 관련된 테이블에 대한 유용한 정보를 얻을 수 있습니다. 데이터베이스의 개요(크기, 유형, 열린 연결 수 및 테이블 요약)를 확인하려면 <code>db:show</code> 명령어를 사용할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='bash'>
| |
| php artisan db:show
| |
| </syntaxhighlight>
| |
|
| |
| 명령어에 <code>--database</code> 옵션을 통해 검사할 데이터베이스 연결 이름을 제공하여 특정 데이터베이스 연결을 지정할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='bash'>
| |
| php artisan db:show --database=pgsql
| |
| </syntaxhighlight>
| |
|
| |
| 명령어의 출력에 테이블 행 수 및 데이터베이스 뷰 세부 정보를 포함하려면 <code>--counts</code>와 <code>--views</code> 옵션을 제공할 수 있습니다. 대형 데이터베이스의 경우 행 수 및 뷰 세부 정보를 검색하는 데 시간이 걸릴 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='bash'>
| |
| php artisan db:show --counts --views
| |
| </syntaxhighlight>
| |
|
| |
| 또한 다음 <code>Schema</code> 메소드를 사용하여 데이터베이스를 검사할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use Illuminate\Support\Facades\Schema;
| |
|
| |
| $tables = Schema::getTables();
| |
| $views = Schema::getViews();
| |
| $columns = Schema::getColumns('users');
| |
| $indexes = Schema::getIndexes('users');
| |
| $foreignKeys = Schema::getForeignKeys('users');
| |
| </syntaxhighlight>
| |
|
| |
| 기본 애플리케이션 연결이 아닌 데이터베이스 연결을 검사하려면 <code>connection</code> 메소드를 사용할 수 있습니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| $columns = Schema::connection('sqlite')->getColumns('users');
| |
| </syntaxhighlight>
| |
|
| |
| ;테이블 개요
| |
| 데이터베이스 내 개별 테이블에 대한 개요를 확인하려면 <code>db:table</code> Artisan 명령어를 실행할 수 있습니다. 이 명령어는 테이블의 컬럼, 유형, 속성, 키, 인덱스를 포함한 일반적인 개요를 제공합니다:
| |
|
| |
| <syntaxhighlight lang='bash'>
| |
| php artisan db:table users
| |
| </syntaxhighlight>
| |
|
| |
| ==데이터베이스 모니터링== | | ==데이터베이스 모니터링== |
| <code>db:monitor</code> Artisan 명령어를 사용하면 Laravel이 지정된 수 이상의 열린 연결을 관리하고 있을 때 <code>Illuminate\Database\Events\DatabaseBusy</code> 이벤트를 디스패치하도록 지시할 수 있습니다.
| |
|
| |
| 시작하려면, <code>db:monitor</code> 명령어를 [[Laravel 스케줄링|매 분마다 실행]]하도록 예약해야 합니다. 이 명령어는 모니터링하려는 데이터베이스 연결 설정 이름과 이벤트를 디스패치하기 전에 허용할 수 있는 최대 열린 연결 수를 인수로 받습니다:
| |
|
| |
| <syntaxhighlight lang='bash'>
| |
| php artisan db:monitor --databases=mysql,pgsql --max=100
| |
| </syntaxhighlight>
| |
|
| |
| 이 명령어를 예약하는 것만으로는 열린 연결 수에 대한 알림을 트리거하기에 충분하지 않습니다. 명령어가 임계값을 초과하는 열린 연결 수를 가진 데이터베이스를 발견하면, <code>DatabaseBusy</code> 이벤트가 디스패치됩니다. 이 이벤트를 수신하여 알림을 개발팀에게 보내기 위해 애플리케이션의 <code>AppServiceProvider</code> 내에서 이 이벤트를 들어야 합니다:
| |
|
| |
| <syntaxhighlight lang='php'>
| |
| use App\Notifications\DatabaseApproachingMaxConnections;
| |
| use Illuminate\Database\Events\DatabaseBusy;
| |
| use Illuminate\Support\Facades\Event;
| |
| use Illuminate\Support\Facades\Notification;
| |
|
| |
| /**
| |
| * 애플리케이션 서비스 부트스트랩.
| |
| */
| |
| public function boot(): void
| |
| {
| |
| Event::listen(function (DatabaseBusy $event) {
| |
| Notification::route('mail', 'dev@example.com')
| |
| ->notify(new DatabaseApproachingMaxConnections(
| |
| $event->connectionName,
| |
| $event->connections
| |
| ));
| |
| });
| |
| }
| |
| </syntaxhighlight>
| |
|
| |
| 이 코드 조각은 DatabaseBusy 이벤트가 발생할 때 알림을 설정하여 개발팀에게 데이터베이스 연결 수가 최대 허용치를 초과했음을 알립니다.
| |