전체 글 327

[Laravel] subMonth / addMonth 사용 시 주의사항

31일에 subMonth 또는 addMonth 를 사용하게 되면 전달의 마지막날, 혹은 다음달의 마지막날이 나오지 않는다. 예를들어 12월 31일에 subMonth(1) 을 사용하게 되면, 11월 31일이 나와야 하는데 12월 1일이 나오게 됨 >>> $m = Carbon\Carbon::now() => Carbon\Carbon @1640933706 {#3627 date: 2021-12-31 15:55:06.929429 Asia/Seoul (+09:00), } >>> $m->subMonth(1) => Carbon\Carbon @1638341872 {#3628 date: 2021-12-01 15:57:52.344882 Asia/Seoul (+09:00), } addMonth(2) 를 했을 때 2월 28일을 ..

Laravel 2021.12.31

[Laravel] Eloquent로 USE INDEX / FORCE INDEX 사용하기

쿼리빌더 DB::table(DB::raw("`table_name` USE INDEX(table_name_tid_index)")) ->select('...') ->where('...') ->get(); 엘로퀀트 $tableElo = new TableModel(); $tableElo->setTable(DB:raw($tableElo->getTable().' USE INDEX(table_name_tid_index)')) ->select('...') ->where('...') ->get(); getQuery()를 사용하여 로그에서 쿼리 확인 방법 $tableElo = new TableModel(); $query = $tableElo->setTable(DB:raw($tableElo->getTable().' USE ..

Laravel 2021.12.21

[Linux] VI 에디터에서 시스템 클립보드로 복사하는 방법

콘솔로 서버 등에 접근해서 vi 에디터에서 복사 후, 시스템 클립보드로 복사가 되지 않을 때 확인방법 vim --version 해보면 -clipboard 와 같이 클립보드에 - 로 되어 있다. vim --version VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Jun 21 2019 04:10:35) Included patches: 1-197, 322, 377-378, 550, 649, 651, 703, 706-707 Extra patches: 8.1.1401, 8.1.1382, 8.1.1368, 8.1.1367, 8.1.1366, 8.1.1365, 8.1.1046, 8.1.0613, 8.1.0547, 8.1.0546, 8.1.0544, 8.1.0540, 8.1.053..

Linux 2021.12.09

[Mysql/MariaDB] Slow Query Log 세팅

SET GLOBAL slow_query_log = ON; SET GLOBAL slow_query_log_file = 'C:/home/storage/logs/mariadb-slow.log'; SET GLOBAL long_query_time = 1; SET GLOBAL log_output = 'FILE'; 아래 3가지 확인 show global variables like '%slow%'; show global variables like '%long%'; show global variables like '%log_output%'; slow_query_log = 'ON' 으로 변경해야 함 slow_query_log_file = 로그파일 저장될 경로 long_query_tiem = 쿼리실행 시간이 10초 이상일때..

Mysql 2021.12.07

[Laravel] 오토로더 classmap 과 psr-4 성능 최적화

composer.json 내 autoload 부분에 기술된 형태에 따라 classmap 방식으로 class들을 로딩할건지 psr-4 방식으로 할건지 나뉜다. "autoload": { "classmap": [ "database" ], "psr-4": { "App\\": "app/" } }, classmap : composer.json 에 classmap 에 지정된 폴더 내의 모든 php를 읽어서 /vendor/composer/autoload_classmap.php 에 정적으로 배열을 생성하고 이 파일들을 한번에 오토로딩 한다. 장점 : 클래스들을 미리 로딩하므로 런타임시 psr-4보다 성능이 향상됨 단점 : 클래스를 추가할 때마다 dump-autoload를 해서 클래스맵을 작성 해줘야 하는 번거로움 psr..

Laravel 2021.12.07

[MariaDB] mysql 환경변수 설정하기 for Windows

윈도우에서 mysql 환경변수 설정하기 1. 시작->'고급'검색 후 '고급 시스템 설정 보기' 클릭 2. 환경변수 버튼 클릭 3. 시스템 변수 부분에서 'Path' 를 선택 후 '편집' 클릭 4. 새로 만들기 클릭 5. 자신의 mysql 또는 mariadb의 설치경로/bin 을 입력 후 확인 예) C:\Program Files\MariaDB 10.6\bin 6. cmd 진입 후 mysql -V C:\Users>mysql -V mysql Ver 15.1 Distrib 10.6.4-MariaDB, for Win64

Mysql 2021.11.24

[MariaDB] 300만건 대용량 테스트 데이터 만들기

1. github 에서 대용량 데이터 다운로드 받기 https://github.com/datacharmer/test_db GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, used to test your applications and database A sample MySQL database with an integrated test suite, used to test your applications and database servers - GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, use... ..

Mysql 2021.11.12

[MySQL] EXPLAIN 실행 계획 사용 방법

DB 튜닝이나 쿼리 최적화를 위해서 가장 먼저 해야 하는 것이 실행계획을 살펴보는 것이다. EXPLAIN SELECT * FROM dummy_test WHERE id=3 AND email = 'QS3aYM5YqB@gmail.com' 사용 방법은 EXPLAIN 을 쿼리 앞에 붙여주면 된다. 결과 : 인덱스를 생성해서 확인해보자 ALTER TABLE dummy_test ADD INDEX test_idx_id_email(id, email) 인덱스 삭제 방법 ALTER TABLE dummy_Test DROP INDEX test_idx_id_email 인덱스가 잘 생성되었는지 확인 SHOW INDEX FROM dummy_test 위 처럼 잘 생성 되었다. 이제 EXPLAIN을 사용하여 인덱스를 타는지 확인 해보자..

Mysql 2021.11.11

[Laravel] Swagger API 적용 하기

1. zircote/swagger-php 설치 composer require zircote/swagger-php //버전 지정 composer require zircote/swagger-php:3.3.2 - 삭제 composer remove zircote/swagger-php 2. Controller 등 API 작성 메소드 위에 애노테이션으로 기술하기 /** * @OA\Info(title="My First API", version="0.1") */ /** * @OA\Get( * path="/api/resource.json", * @OA\Response(response="200", description="An example resource") * ) */ -상세설명 (회원 등록 샘플) /** * @OA\P..

Laravel 2021.11.11

[DB] Index 의 사용

index의 사용을 고려해야 할 때 1. 테이블의 규모가 작지 않을 때 2. insert, update, delete 작업이 자주 일어나지 않는 경우 3. where, join, order by 에 자주 사용되는 컬럼 4. 데이터의 중복도가 낮은 컬럼(카디널리티가 높은 컬럼) 5. 검색결과가 전체 데이터의 10% 미만일 때 index 사용 시 주의사항 1. index는 무분별하게 많이 사용한다고 좋은 것이 아님 2. 꼭 필요할 때만 사용 3. 사용하지 않는 index는 꼭 삭제한다. 결합 인덱스(여러 컬럼으로 index 구성) 1. 데이터의 중복도가 낮은(유니크에 가까운) 컬럼을 우선적으로 구성 2. select 시 index를 태우려면 첫번째 index 조건은 where절에 꼭 포함되어야 한다. (첫번..

Mysql 2021.11.10

[Laravel] db에 더미 데이터 만들기

seeder 사용 php artisan make:seeder DummyTestSeeder php artisan make:seeder DummyTestSeeder mysql에 dummy_test 라는 테이블과 id, name, email, password 등 자신이 입력하고자 하는 필드들을 만들어 둔다. database/seeds 안에 DummyTestSeeder.php 파일이 생성되면 run에 작성한다. public function run() { for($i=1; $iinsert([ 'id' => $i, 'name' => \Illuminate\Support\Str::random(10), 'email' => \Illuminate\Support\Str::random(10).'@gmail.com', 'pass..

Laravel 2021.11.10
반응형