2 | 100#🎜 🎜# | # 🎜🎜# 앨범 조회수를 계산하려면 앨범 테이블에 앨범 조회수 필드를 추가하고 사진을 탐색할 때 동시에 앨범 조회수를 업데이트할 수 있습니다.
2. 느린 쿼리 켜기
Mysql 느린 쿼리는 기본적으로 꺼져 있습니다. . 10초를 초과하는 SQL 문을 기록합니다.
1. 느린 쿼리 기록 시간 확인:
show variables like ‘long_query_time’;
로그인 후 복사
# 🎜🎜#2. 느린 쿼리 시간 수정: set long_query_time=2;
로그인 후 복사
3. 다음 함수를 통해 테스트합니다. benchmark(count,expr) 函数可以测试执行count次expr操作需要的时间
로그인 후 복사
3. 🎜🎜#
1. 기본 키 인덱스의 특성: (1) 기본 키는 최대 1개입니다. 테이블 인덱스
(2) 기본 키 인덱스는 여러 열을 가리킬 수 있습니다 (3) 기본 키 인덱스의 열은 중복된 값이나 null을 가질 수 없습니다# 🎜🎜# (4) 기본 키 인덱스는 매우 효율적입니다.
2. 고유 인덱스의 특성:
(1) 하나의 테이블이 가능합니다.
(2) 고유 인덱스는 여러 열을 가리킬 수 있습니다.
(3) 고유 인덱스에 null이 아님이 지정되지 않은 경우 열은 비어 있을 수 있고 동시에 여러 개의 null이 있을 수 있습니다.
(4) 고유 인덱스가 더 효율적입니다.
3. 일반 인덱스:
일반 인덱스를 사용하는 것은 주로 쿼리 효율성을 높이기 위한 것입니다 # 🎜🎜#
4. 전체 텍스트 색인mysql 자체 전체 텍스트 색인 mysql5.5는 중국어를 지원하지 않고 영어를 지원합니다. , 테이블이 필요합니다. 스토리지 엔진은 myisam입니다. 중국어를 지원하려면 두 가지 옵션이 있습니다. (1) aphinx 중국어 버전 coreseek 사용(전체 텍스트 색인 대체)
(2) Plug- mysqlcft에서. 색인 추가 관련 주요 문제: (1) 더 자주 사용되는 쿼리 조건 필드는 다음과 같아야 합니다. 생성된 인덱스, 고유성이 낮은 필드는 단독으로 인덱스 생성에 적합하지 않습니다 쿼리 조건으로 자주 사용되더라도 자주 업데이트되는 필드는 인덱스 생성에 적합하지 않습니다. index
# 🎜🎜#(2) WHERE 절에 표시되지 않는 필드는 색인화하면 안 됩니다. 색인은 쿼리 속도가 향상되지만 에 영향을 미칩니다. 추가 및 삭제의 효율성 . 그리고 인덱스 파일은 공간을 차지합니다.
IV. 테이블 및 파티션
# 🎜🎜#
세로 하위 테이블(컨텐츠 메인 테이블 + 추가 테이블):
컨텐트 메인 테이블: 각각 저장 데이터 이름, 추가 시간 등과 같은 데이터의 일부 공개 정보 는 여러 개의 추가 테이블을 사용할 수 있으며 추가 테이블에는 데이터의 일부 고유 정보가 저장됩니다.
주된 이유는 콘텐츠 마스터 테이블의 데이터에 더 자주 액세스된다는 것입니다.
기능: 다양한 테이블 구조
가로 테이블: # 🎜 🎜#
테이블 데이터를 다른 테이블에 저장
.
기능: 동일한 테이블 구조
# 🎜🎜#Partition:
은 테이블을 디스크의 다른 영역에 저장하는 것이지만 여전히 테이블 하나. 기본 개념:
(1) 범위 ) – 이 모드를 사용하면 데이터를 여러 범위로 나눌 수 있습니다. 예를 들어, 테이블은 연도별로 여러 파티션으로 나눌 수 있습니다.
(2)목록(미리 정의된 목록) – 이 모드를 사용하면 시스템이 미리 정의된 목록의 값으로 데이터를 분할할 수 있습니다.
(3)Hash(해시) – 이 모드를 사용하면 테이블의 하나 이상의 열에 대한 해시 키를 계산할 수 있으며, 마지막으로 해시 코드가 다릅니다. 데이터 숫자 값에 해당하는 영역이 분할됩니다. 예를 들어 테이블의 기본 키를 분할하는 테이블을 만들 수 있습니다.
(4)Key(键值)-上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
分区表的限制:
(1)只能对数据表的整型列进行分区,或者数据列可以通过分区函数转化成整型列。
(2)最大分区数目不能超过1024。
(3)如果含有唯一索引或者主键,则分区列必须包含在所有的唯一索引或者主键在内。
(4)按日期进行分区很非常适合,因为很多日期函数可以用。但是对于字符串来说合适的分区函数不太多。
五、并发处理的锁机制
锁机制:在执行时,只有一个用户获得锁,其他用户处于阻塞状态,需要等待解锁。
mysql 的锁有以下几种形式:
表级锁:开销小,加锁快,发生锁冲突的概率最高,并发度最低。myisam引擎属于这种类型。
行级锁:开销大,加锁慢,发生锁冲突的概率最低,并发度也最高。innodb属于这种类型。
表锁的演示:
1.对myisam表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其他进程的操作。
2.表添加读锁后,其他进程对该表只能查询操作,修改时会被阻塞。
3.当前进程,能够执行查询操作,不能执行修改操作。不能对没有锁定的表进行操作。
4.锁表的语法:
lock table 表名 read|write
로그인 후 복사
5.也可以锁定多个表
6.对myisam表的写操作(加写锁),会阻塞其他进程对锁定表的任何操作,不能读写,
7.表加写锁后,则只有当前进程对锁定的表,可以执行任何操作。其他进程的操作会被阻塞。
行锁的演示:
1.innodb存储引擎是通过给索引上的索引项加锁来实现的,这就意味着:只有通过索引条件检索数据,innodb才会使用行级锁,否则,innodb使用表锁。
2.开启行锁后,当前进程在针对某条记录执行操作时,其他进程不能操作和当前进程相同id的记录。
php里面有文件锁,在实际的项目中多数使用文件锁,因为表锁,会阻塞,当对一些表添加写锁后,其他进程就不能操作了。这样会阻塞整个网站,会拖慢网站的速度。
相关推荐: