無標(biāo)題文章

目錄

筆記大型項(xiàng)目優(yōu)化概述大型項(xiàng)目優(yōu)化的方向代碼優(yōu)化數(shù)據(jù)庫優(yōu)化緩存優(yōu)化架構(gòu)優(yōu)化Memcache與MySQL比較語法參數(shù)解釋:增/改鍵(set)獲取鍵值(get)添加鍵數(shù)據(jù)(add)修改鍵數(shù)據(jù)(replace)刪除鍵(delete)刪除所有鍵(flush_all)遞增(incr)和遞減(decr)查看當(dāng)前Memcached運(yùn)行狀態(tài)(stats)PHP操作memcacheMemcache的相關(guān)算法Redis字符串(string)哈希(Hash)列表(List)集合(Set)有序集合(Sorted Set)鍵(Key)Mysql優(yōu)化如何優(yōu)化MySQL三范式(設(shè)計(jì)表的規(guī)則)設(shè)計(jì)表:設(shè)計(jì)表推薦如下字段存儲(chǔ)引擎MyIsam和InnoDB存儲(chǔ)引擎區(qū)別慢查詢?nèi)罩?/a>索引MySQL中的執(zhí)行計(jì)劃分析查詢類型(select_type)分析表名(table)分析額外項(xiàng)(extra)分析連接所使用的類型(type)索引的使用原則(哪些常見情況不能用索引?)前綴索引limit分頁優(yōu)化(百萬至千萬級(jí)快速分頁)分表技術(shù)為什么需要MySQL分表/分區(qū)分區(qū)算法分區(qū)算法介紹分區(qū)語法分區(qū)管理SphinxSphinx使用流程安裝sphinx配置Sphinx創(chuàng)建索引使用PHP API操作Sphinx匹配模式增量索引(Sphinx索引更新)MongoDB概念什么是NoSQL創(chuàng)建MongoDB服務(wù)連接MongoDB服務(wù)器入門命令庫和集合操作增刪改查

筆記

大型項(xiàng)目優(yōu)化概述

簡單理解:讀取源碼-》詞法分析-》創(chuàng)建opcode-》執(zhí)行opcode重復(fù)創(chuàng)建會(huì)增加額外的內(nèi)存和cpu開銷

解決方案:安裝ZendOptimizer或APC2.0等可以加速PHP代碼訪問放可,主要用于緩存opcode而不是每次重復(fù)編譯減少CPU和內(nèi)存開銷(php5.5+后不需要安裝第三方軟件,直接開啟PHP配置文件中Opcache即可琐谤。

大型項(xiàng)目優(yōu)化的方向

代碼優(yōu)化

開啟opcode緩存赔桌,減少額外CPU和內(nèi)存開銷代赁,加快代碼運(yùn)行速度

重模型掩宜,輕控制器戚扳,減少冗余

符合PHP-FIG規(guī)范和phpDoc規(guī)范,增強(qiáng)代碼可讀性&可擴(kuò)展性魁巩,有利于團(tuán)隊(duì)開發(fā)

類: 花括號(hào)獨(dú)占一行

類中方法:華括號(hào)獨(dú)占一行

類名:大駝峰

方法名:小駝峰

命名空間:后面空一行

常量名:大寫急灭,多個(gè)單詞用下劃線分割

數(shù)據(jù)庫優(yōu)化

架構(gòu):主從復(fù)制、讀寫分離

設(shè)計(jì):存儲(chǔ)引擎谷遂、字段類型葬馋、三范式

功能:緩存、分區(qū)肾扰、索引

緩存優(yōu)化

好處:減少數(shù)據(jù)庫查詢畴嘶,將數(shù)據(jù)緩存到文件或內(nèi)存中,加快查詢數(shù)據(jù)

實(shí)現(xiàn):

內(nèi)存(memcache集晚、redis)

文件(使用TP3.2的大S或大F方法窗悯,TP5中的Cache類)

內(nèi)存速度>文件速度>數(shù)據(jù)庫速度

架構(gòu)優(yōu)化

負(fù)載均衡:將用戶請(qǐng)求分配給多個(gè)服務(wù)器處理(輪詢、ip哈希)

集群:多個(gè)服務(wù)器實(shí)現(xiàn)相同的業(yè)務(wù)

動(dòng)靜分離:將靜態(tài)資源單獨(dú)放一臺(tái)服務(wù)器

主從復(fù)制:insert/update/delete到主服務(wù)器執(zhí)行偷拔,所有從服務(wù)器檢測(cè)大主服務(wù)器有寫入數(shù)據(jù)則自動(dòng)同步

讀寫分離:通過PHP判斷蟀瞧,如果是insert/update/delete交給主服務(wù)器處理,如果是select交給從服務(wù)器處理

CDN加速:將靜態(tài)資源緩存到用戶所在城市条摸,加快訪問速度

Memcache

概念:一個(gè)數(shù)據(jù)庫,但是數(shù)據(jù)存在內(nèi)存中

作用:常用來做緩存服務(wù)器铸屉、將從數(shù)據(jù)庫查詢的數(shù)據(jù)緩存起來钉蒲,減少數(shù)據(jù)庫查詢、加快查詢速度

數(shù)據(jù)存儲(chǔ)在內(nèi)存中系統(tǒng)重啟則丟失

與MySQL比較

共同點(diǎn):都是C/S架構(gòu)

不同點(diǎn):MySQL存磁盤文件彻坛、memcache存在內(nèi)存中

不同點(diǎn):MySQL存儲(chǔ)數(shù)據(jù)要先創(chuàng)建數(shù)據(jù)庫再創(chuàng)建表顷啼、memcache直接以鍵值對(duì)形式存儲(chǔ)

鍵key值value

字符串(唯一)字符串、整數(shù)昌屉、浮點(diǎn)數(shù)钙蒙、布爾、數(shù)組间驮、對(duì)象躬厌、NULL、二進(jìn)制數(shù)據(jù)(圖片竞帽、視頻扛施、音頻)

語法參數(shù)解釋:

鍵? ? ? - 最大長度不超過250字符

是否壓縮? -? 1-是鸿捧,0-否(以空間換時(shí)間)

緩存時(shí)間? -? 0-理論永久,其他-單位秒(注:最大存儲(chǔ)時(shí)間30天)

數(shù)據(jù)長度? -? 寫數(shù)字疙渣,單位字節(jié)(注:回車輸入具體內(nèi)容)

增/改鍵(set)

語法:set 鍵 是否壓縮? 緩存時(shí)間? 數(shù)據(jù)長度

說明: 鍵存在-則修改匙奴,鍵不存在-則創(chuàng)建

獲取鍵值(get)

語法:get 鍵

添加鍵數(shù)據(jù)(add)

語法:add ?鍵 ?是否壓縮 ?緩存時(shí)間/s ?數(shù)據(jù)長度/字節(jié)?

說明:只能添加不能修改

修改鍵數(shù)據(jù)(replace)

語法:replace ?鍵 ?是否壓縮 ?緩存時(shí)間/s ??數(shù)據(jù)長度/字節(jié)

說明:只能修改不能添加

刪除鍵(delete)

語法:delete 鍵

刪除所有鍵(flush_all)

語法:flush_all

遞增(incr)和遞減(decr)

語法:incr? 鍵? 數(shù)字

語法:decr? 鍵? 數(shù)字

說明:返回增長后的結(jié)果,鍵必須存在

查看當(dāng)前Memcached運(yùn)行狀態(tài)(stats)

pid: memcache服務(wù)器進(jìn)程ID

uptime:服務(wù)器已運(yùn)行秒數(shù)

time:服務(wù)器當(dāng)前Unix時(shí)間戳

version:memcache版本

pointer_size:操作系統(tǒng)指針大小

rusage_user:進(jìn)程累計(jì)用戶時(shí)間

rusage_system:進(jìn)程累計(jì)系統(tǒng)時(shí)間

curr_connections:當(dāng)前連接數(shù)量

total_connections:Memcached運(yùn)行以來連接總數(shù)

connection_structures:Memcached分配的連接結(jié)構(gòu)數(shù)量

cmd_get:get命令請(qǐng)求次數(shù)

cmd_set:set命令請(qǐng)求次數(shù)

cmd_flush:flush命令請(qǐng)求次數(shù)

get_hits:get命令命中次數(shù)

get_misses:get命令未命中次數(shù)

delete_misses:delete命令未命中次數(shù)

delete_hits:delete命令命中次數(shù)

incr_misses:incr命令未命中次數(shù)

incr_hits:incr命令命中次數(shù)

decr_misses:decr命令未命中次數(shù)

decr_hits:decr命令命中次數(shù)

cas_misses:cas命令未命中次數(shù)

cas_hits:cas命令命中次數(shù)

cas_badval:使用擦拭次數(shù)

auth_cmds:認(rèn)證命令處理的次數(shù)

auth_errors:認(rèn)證失敗數(shù)目

bytes_read:讀取總字節(jié)數(shù)

bytes_written:發(fā)送總字節(jié)數(shù)

limit_maxbytes:分配的內(nèi)存總大型蟆(字節(jié))

accepting_conns:服務(wù)器是否達(dá)到過最大連接(0/1)

listen_disabled_num:失效的監(jiān)聽數(shù)

threads:當(dāng)前線程數(shù)

conn_yields:連接操作主動(dòng)放棄數(shù)目

bytes:當(dāng)前存儲(chǔ)占用的字節(jié)數(shù)

curr_items:當(dāng)前存儲(chǔ)的數(shù)據(jù)總數(shù)

total_items:啟動(dòng)以來存儲(chǔ)的數(shù)據(jù)總數(shù)(包括過期的)

evictions:LRU釋放的對(duì)象數(shù)目

reclaimed:已過期的數(shù)據(jù)條目來存儲(chǔ)新數(shù)據(jù)的數(shù)目

PHP操作memcache

先開啟memcache擴(kuò)展即可

語法:

創(chuàng)建mem對(duì)象:$mem = new Memcache;

連接服務(wù)器:? $mem->connect(服務(wù)ip地址泼菌,端口)

關(guān)閉服務(wù)器:? $mem->close();

設(shè)置數(shù)據(jù):? ? $mem->set(鍵,值? [啦租,是否壓縮哗伯,緩存時(shí)間])

獲取數(shù)據(jù):? ? $mem->get(鍵)

遞增:? ? ? ? $mem->incrment(鍵,數(shù)字);遞減: ? $mem->decrment(鍵刷钢,數(shù)字);

Memcache的相關(guān)算法

惰性過期機(jī)制

說明:memcached內(nèi)部不會(huì)監(jiān)視記錄是否過期笋颤,而是在get時(shí)查看記錄的時(shí)間戳,檢查記錄是否過期内地。這種技術(shù)被稱為惰性過期

好處:減少監(jiān)控過期產(chǎn)生的開銷

最近最少使用算法

緩存空間已滿伴澄,采用LRU策略,將使用頻率最低數(shù)據(jù)進(jìn)行刪除

Redis

字符串(string)

設(shè)置1個(gè)鍵: set 鍵? 值

設(shè)置n個(gè)鍵:mset 鍵1 值1 .. 鍵n 值n

獲取1個(gè)鍵: get 鍵?

獲取n個(gè)鍵:mget 鍵1 鍵n

遞增遞減: incr/decr 鍵

增減指定: incrby/decrby 鍵 數(shù)字

追加:? ? append 鍵 內(nèi)容

截融寤骸: ? substr 鍵 起始位置 結(jié)束位置(注:下標(biāo)從0開始非凌,含前含后)

哈希(Hash)

設(shè)置1個(gè)值: hset 鍵 字段? 值

獲取1個(gè)值: hget 鍵 字段?

設(shè)置n個(gè)值:hmset 鍵 字段1 值1 ... 字段n 值n

獲取n個(gè)值:hmget 鍵 字段1 ... 字段n

檢測(cè)字段: hexists 鍵 字段

刪除字段: hdel? 鍵 字段

字段個(gè)數(shù): hlen? 鍵

所有字段: hkeys 鍵

所有值:? hvals 鍵

所有字段值:hgetall 鍵

列表(List)

壓入:lpush/rpush 鍵 值

彈出:lpop/rpop? 鍵

查詢:lrange 鍵 起始位置 結(jié)束位置

集合(Set)

添加:sadd 集合名 數(shù)據(jù)

刪除:srem 集合名 數(shù)據(jù)

查看:smembers 集合名

差集:sdiff 集合名1 ... 集合名n? ? 我有你沒有

交集:sinter 集合名1 ... 集合名n? 大家都有的

并集:sunion 集合名1 ... 集合名n? 合并去重

有序集合(Sorted Set)

添加:zadd 集合名 數(shù)據(jù) 成員

刪除:zrem 集合名 成員

查看: zrange 集合名 起始位置 結(jié)束位置 [withscores]? ? (升序)

查看: zrevrange 集合名 起始位置 結(jié)束位置 [withscores]? (降序)

鍵(Key)

鍵是否存在:exists 鍵

鍵類型: type 鍵

鍵查詢: keys *

鍵更名: rename 舊鍵 新鍵

鍵統(tǒng)計(jì): dbsize

鍵設(shè)置過期:expire 鍵? 秒數(shù)

查看過期: ttl 鍵 (明確:過期則代表不存在,不存在-2荆针,未設(shè)置-1)

選擇數(shù)據(jù)庫:select 下標(biāo)(注:通過redis.conf聲明數(shù)據(jù)庫個(gè)數(shù))

刪除當(dāng)前庫:flushdb

刪除所有庫:flushall

Mysql優(yōu)化

如何優(yōu)化MySQL

架構(gòu):主從復(fù)制敞嗡、讀寫分離

設(shè)計(jì):三范式+逆范式、存儲(chǔ)引擎航背、列類型的選擇

功能:索引喉悴、緩存、分區(qū)

三范式(設(shè)計(jì)表的規(guī)則)設(shè)計(jì)表:

確保每列/字段保持原子性

有主鍵玖媚,且非主鍵字段依賴主鍵

消除傳遞依賴箕肃,非主鍵字段不能相互依賴

好處:減少冗余,提高表的查詢速度

逆范式:用空間換時(shí)間

設(shè)計(jì)表推薦如下字段

編號(hào)今魔、創(chuàng)建于勺像、更新于、是否刪除

存儲(chǔ)引擎

名詞错森,指MySQL按照指定數(shù)據(jù)格式存儲(chǔ)

myisam:速度快吟宦,但不支持事務(wù)和外鍵約束

innodb:支持事務(wù),行級(jí)鎖定涩维,外鍵約束

archive:只可插入和查詢殃姓,不支持刪除和修改

memory:存儲(chǔ)在內(nèi)存,了解

MyIsam和InnoDB存儲(chǔ)引擎區(qū)別

存儲(chǔ)結(jié)構(gòu):myisam - 3個(gè)文件、innodb - 2個(gè)文件

鎖:myisam - 僅支持表鎖辰狡,innodb - 行鎖&表鎖

事物和外鍵支持:myisam - 不支持 锋叨, innodb? -支持

CURD操作:

?? ? ? ? myisam:大量查詢

?? ? ? ? innodb:大量的插入和修改

全文檢索:僅MySQL5.6以下innodb不支持(都不支持中文)

慢查詢?nèi)罩?/p>

作用:為了防止sql出問題,查詢過慢宛篇。

方法:通過MySQL記錄執(zhí)行較長的SQL語言

使用如下指令查看慢查詢?nèi)罩臼欠耖_啟

showvariableslike'%slow_query%'

沒開啟娃磺,就手工開啟慢查詢?nèi)罩?/p>

setglobalslow_query_log =1;

設(shè)置查詢的臨界時(shí)間(查詢超過指定時(shí)間后紀(jì)錄)

showvariableslike'%query_time%';

setgloballong_query_time =2;

使用查詢語句(超時(shí))

insertintophp_slow_log2values('zzzzzz','zzzzzz');

insertintophp_slow_log2(name,name2)selectname,name2fromphp_slow_log2;

驗(yàn)證記錄慢SQL語句,查看日志的記錄

索引

四種索引形式:

普通索引(index)? ? ? ? ? ? ? -? 僅僅為了提高查詢速度

唯一索引(unique)? ? ? ? ? -? 保存數(shù)據(jù)唯一性不能重復(fù)

主鍵索引(primary key)? -? 既保存數(shù)據(jù)唯一又不能為null? ? ? ? 編號(hào)

全文檢索(fulltext) ? -? 提取關(guān)鍵字添加索引(明天詳細(xì)說)? like

組合索引(index) ? -? 給多個(gè)字段添加相同的索引

? 新建表時(shí)添加索引:

修改表時(shí)添加索引或者刪除索引

修改表添加索引:alter table 表名 add 索引類型? 索引名(字段)

刪除表指定索引:drop? index? 索引名 on 表名

MySQL中的執(zhí)行計(jì)劃

就是通過explain語法分析SQL語句

語法:explain? SQL語句 \G

說明:\G后面不要加分號(hào)

字段類型含義

select_type查詢類型

table表名

type連接類型

possible_keys可能用到的索引

key實(shí)際用到索引

key_len索引長度

rows檢索了多少數(shù)據(jù)叫倍,最終顯示結(jié)果

分析查詢類型(select_type)

simple:不含子查詢

primary:含子查詢或派生查詢

subquery :非from子查詢

derived:from型子查詢

union

union result

分析表名(table)

實(shí)際表名

表別名

derived(from型子查詢)

null

分析額外項(xiàng)(extra)

index:是指用到了索引覆蓋偷卧,效率非常高

using where:是指光靠索引定位不了,還得where判斷一下

extra中出現(xiàn)以下2項(xiàng)意味著MySQL根本不能使用索引吆倦,效率會(huì)受到重大影響听诸,應(yīng)盡可能對(duì)此進(jìn)行優(yōu)化

using temporary:表示 MySQL 在對(duì)查詢結(jié)果排序時(shí)使用臨時(shí)表。常見于排序 order by 和分組查詢 group by

using filesort:表示 MySQL 會(huì)對(duì)結(jié)果使用一個(gè)外部索引排序,而不是從表里按索引次序讀到相關(guān)內(nèi)容蚕泽∩卫妫可能在內(nèi)存或者磁盤上進(jìn)行排序。MySQL 中無法利用索引完成的排序操作稱為“文件排序”

分析連接所使用的類型(type)

最好的是? system? 一般在表中只有一行記錄的或者查詢系統(tǒng)表的時(shí)候出現(xiàn)须妻。

其次就是 const? ? ? 一般在使用主鍵索引的時(shí)候會(huì)出現(xiàn)仔蝌。

其其次 range? ? ? ? ? 一般在做范圍查詢的時(shí)候會(huì)使用 id < 100。

index? ? ? ? ? ? ? ? ? 代表可以使用索引做一些優(yōu)化荒吏,一般在查詢表的總行數(shù)的時(shí)候出現(xiàn)敛惊。

all? ? ? ? ? ? ? ? ? ? ? 一般使用不上索引的時(shí)候出現(xiàn)。

. ref 意思是指 通過索引列,可以直接引用到某些數(shù)據(jù)行. eq_ref 意思是指 通過索引列,可以直接引用某1行數(shù)據(jù)

索引的使用原則(哪些常見情況不能用索引绰更?)

說明:

like查詢(“%”和“_”開頭)索引失效

or運(yùn)算都要具有索引瞧挤,否則索引失效

where條件字段是字符串類型必須加引號(hào)

組合索引字段單獨(dú)使用,左邊生效儡湾,右邊失效(左原則)

前綴索引

概念:就是給字段內(nèi)容前n個(gè)字符添加索引(前n個(gè)字符必須具備唯一性)

好處:加快查詢速度

語法:

altertable表名add索引類型 索引名(字段(字符))

limit分頁優(yōu)化(百萬至千萬級(jí)快速分頁)

由于數(shù)據(jù)量大超過一定頁后SQL語句查詢慢

問題分析:如果只想查詢最后的5條數(shù)據(jù)特恬,但是一般查詢限制會(huì)查詢所有數(shù)據(jù),所以效率極低

解決方法

從業(yè)務(wù)角度(百度徐钠、谷歌)鸵鸥,限制頁面展示的數(shù)量

從索引角度

以前是通過SQL語句限制數(shù)據(jù),會(huì)過濾全部數(shù)據(jù)

通過id或者其它條件過濾丹皱,避免不必要的性能影響

分表技術(shù)

水平分表

當(dāng)一個(gè)表很大時(shí)我們創(chuàng)建索引后,查詢速度還是很慢宋税,把一個(gè)大表按照某個(gè)標(biāo)準(zhǔn)分割成小表摊崭,這樣可以提高查詢的速度

(用戶ID)%(表個(gè)數(shù)),再通過取余出來的結(jié)果排序

垂直分表

一個(gè)表有很多字段杰赛,查詢慢呢簸。可以通過區(qū)分常用字段和不常用字段

為什么需要MySQL分表/分區(qū)

水平分表或分區(qū),都是為了加快查詢速度

水平分表需要手動(dòng)在應(yīng)用層寫邏輯代碼根时,但是通過分區(qū)可以避免瘦赫,由MySQL底層實(shí)現(xiàn),我們只需要寫原生SQL語句

分區(qū)算法

分區(qū)算法介紹

求余(主鍵字段):key求余算法蛤迎、hash算法

條件:list-數(shù)據(jù)必須在指定集合中确虱,range-數(shù)據(jù)在執(zhí)行范圍中

分區(qū)語法

createtable表名名(


)engine=存儲(chǔ)引擎charset=編號(hào)

partitionby算法名(字段)partitions數(shù)字;

分區(qū)管理

取余管理:增加分區(qū)-不影響原數(shù)據(jù),刪除分區(qū)-不影響原數(shù)據(jù)

條件管理:增加分區(qū)-不影響原數(shù)據(jù)替裆,刪除分區(qū)-數(shù)據(jù)丟失

取余管理(key,hash)

增加分區(qū)數(shù)量:alter table 表名 add partition partitions 數(shù)字

減小分區(qū)數(shù)量:alter table 表名 coalesce partition 數(shù)字

條件管理(list校辩,range)

刪除分區(qū):alter table 表名 drop partition 分區(qū)名

添加分區(qū):

Sphinx

一個(gè)軟件,用來代替MySQL全文檢索

特性:(強(qiáng)辆童、快)

高速的建立索引(峰值性能能達(dá)10M/s)

高性能的搜索(在2-4G的文本數(shù)據(jù)上宜咒,平均每次檢索時(shí)間小于0.1秒)

可處理海量數(shù)據(jù)

優(yōu)勢(shì)

Sphinx單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級(jí))

Sphinx創(chuàng)建索引的速度為:創(chuàng)建100萬條記錄的索引只需3~4分鐘把鉴,創(chuàng)建1000萬條記錄的索引可以在50分鐘內(nèi)完成故黑,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒

Sphinx使用流程

通過sphinx去MySQL中獲取并建立索引文件

通過php去sphinx中查詢數(shù)據(jù)并返回ID

根據(jù)ID去MySQL中查詢具體數(shù)據(jù)

安裝sphinx

配置Sphinx

創(chuàng)建數(shù)據(jù)庫

將etc/csft_mysql.conf復(fù)制并更名為sphinx.conf

復(fù)制下面代碼替換shpinx.conf中的內(nèi)容(紅色-可能需要修改庭砍,綠色-存在對(duì)應(yīng)關(guān)系)

#數(shù)據(jù)源:數(shù)據(jù)來源定義(數(shù)據(jù)庫信息场晶、數(shù)據(jù)源SQL語句)

source music

{

?? #下面是sql數(shù)據(jù)庫特有的端口,用戶名逗威,密碼峰搪,數(shù)據(jù)庫名等。

?? type ? ? ? ? ? ? ? ? ?? = mysql

?

?? sql_host ? ? ? ? ? ? ?? = localhost

?? sql_user ? ? ? ? ? ? ?? = root

?? sql_pass ? ? ? ? ? ? ?? = admin

?? sql_db ? ? ? ? ? ? ? ?? = youhua3

?? sql_port ? ? ? ? ? ? ?? = 3306

?? sql_query_pre ? ? ? ? ? = SET NAMES utf8

?

?? #sql_query屬性:取出要?jiǎng)?chuàng)建索引的數(shù)據(jù)

?? #要求1:SELECT的第一個(gè)字段必須是主鍵凯旭、

?? #要求2:第一個(gè)字段的名字(別名)必須是id

?? #要求3:其他的字段就是要?jiǎng)?chuàng)建索引的字段

?? #需? 求:為歌曲表中的title和author和content字段創(chuàng)建索引

?? sql_query ? ? ? ? ? ? ? = SELECT id, title, author, content FROM music

}

?

#索引的定義(索引文件存放的位置概耻,索引文件的名字)

#每個(gè)index對(duì)應(yīng)一個(gè)數(shù)據(jù)源,用來定義這個(gè)數(shù)據(jù)源生成的索引文件的信息

index music

{

?? #該索引對(duì)應(yīng)哪個(gè)數(shù)據(jù)源

?? source ? ? ? ? ?? = music

?? #索引文件存放的目錄和名字(存到E:/sphinx/var/data/目錄下罐呼,索引文件的名字是music)

?? path ? ? ? ? ? ?? = E:/sphinx/var/data/music ?

?? docinfo ? ? ? ? ? = extern

?? mlock ? ? ? ? ? ? = 0

?? morphology ? ? ?? = none

?? min_word_len ? ?? = 1

?? html_strip ? ? ?? = 0


?? #詞庫文件所在的目錄

?? charset_dictpath = E:/sphinx/etc/

?

#字符集編碼類型鞠柄,可以為:(sbcs,utf-8,zh_cn.utf-8,zh_ch.gbk,zh_ch.big5)

?? charset_type ? ? ?? = zh_cn.utf-8

}

?

#全局index定義

indexer

{

?? #建立索引的時(shí)候,索引內(nèi)存限制

?? mem_limit ? ? ? ? ?? = 128M

}

?

#searchd服務(wù)定義

searchd

{

?? listen ? ? ? ? ? ?? = ? 9312

?? read_timeout ? ? ?? = 5

?? max_children ? ? ?? = 30

?? max_matches ? ? ? ? = 1000

?? seamless_rotate ? ? = 0

?? preopen_indexes ? ? = 0

?? unlink_old ? ? ? ?? = 1


?? # 進(jìn)程id文件

?? pid_file = E:/sphinx/var/log/searchd_mysql.pid ?

?? # 系統(tǒng)日志存放的位置

?? log = E:/sphinx/var/log/searchd_mysql.log ? ? ? ?

?? # 查詢?nèi)罩敬娣诺奈恢?/p>

?? query_log = E:/sphinx/var/log/query_mysql.log

}

index music? ? 創(chuàng)建music索引(和source一一對(duì)應(yīng)嫉柴,表示該索引通過哪些數(shù)據(jù)創(chuàng)建)

source music1? 創(chuàng)建music數(shù)據(jù)源

創(chuàng)建索引

創(chuàng)建指定索引語法:indexer.exe? -c 配置文件? 索引名

創(chuàng)建全部索引語法:indexer.exe? -c 配置文件? --all

使用PHP API操作Sphinx

創(chuàng)建服務(wù):bin\searchd.exe? -c 配置文件 --install

刪除服務(wù):sc delete 服務(wù)名

啟動(dòng)服務(wù):net start 服務(wù)名

關(guān)閉服務(wù):net stop? 服務(wù)名

匹配模式

$sp->SetMatchMode(常量)

常量規(guī)則

SPH_MATCH_ALL? ? ? ? ? 匹配所有詞(默認(rèn))SPH_MATCH_ANY ? ? ? ? 匹配一個(gè)詞

SPH_MATCH_PHRASE? ? ? 匹配整一個(gè)詞

SPH_MATCH_BOOLEAN? 將查詢看作一個(gè)布爾表達(dá)式

SPH_MATCH_EXTENDED? 查詢看做一個(gè)sphinx的表達(dá)式

將sphinx的結(jié)果轉(zhuǎn)化為具體的信息

通過sphinx去mysql中獲取數(shù)據(jù)并建立索引文件

通過php去sphinx匹配數(shù)據(jù)ID

根據(jù)ID去數(shù)據(jù)庫中查詢數(shù)據(jù)

增量索引(Sphinx索引更新)

概念:更新sphinx索引文件的表現(xiàn)稱之為增量索引

語法:

創(chuàng)建索引語法:indexer? -c? 配置文件? 索引名

合并索引語法:indexer? -c? 配置文件? --merge 主索引名 新索引名 --rotate

MongoDB

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末厌杜,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子计螺,更是在濱河造成了極大的恐慌夯尽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件登馒,死亡現(xiàn)場(chǎng)離奇詭異匙握,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)陈轿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門圈纺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來秦忿,“玉大人,你說我怎么就攤上這事蛾娶〉埔ィ” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵蛔琅,是天一觀的道長胎许。 經(jīng)常有香客問我,道長揍愁,這世上最難降的妖魔是什么呐萨? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮莽囤,結(jié)果婚禮上谬擦,老公的妹妹穿的比我還像新娘。我一直安慰自己朽缎,他們只是感情好惨远,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著话肖,像睡著了一般北秽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上最筒,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天贺氓,我揣著相機(jī)與錄音,去河邊找鬼床蜘。 笑死辙培,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的邢锯。 我是一名探鬼主播扬蕊,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼丹擎!你這毒婦竟也來了尾抑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后掂墓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡践磅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灸异。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片府适。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肺樟,靈堂內(nèi)的尸體忽然破棺而出檐春,到底是詐尸還是另有隱情,我是刑警寧澤么伯,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布疟暖,位于F島的核電站,受9級(jí)特大地震影響田柔,放射性物質(zhì)發(fā)生泄漏俐巴。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一硬爆、第九天 我趴在偏房一處隱蔽的房頂上張望欣舵。 院中可真熱鬧,春花似錦缀磕、人聲如沸缘圈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽糟把。三九已至,卻和暖如春牲剃,著一層夾襖步出監(jiān)牢的瞬間遣疯,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工凿傅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缠犀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓狭归,卻偏偏與公主長得像夭坪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子过椎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容