1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      mysql怎么用es加速 mysql配合es

      elasticsearch為什么快

      首先,es有term dictionary,可以用logN次磁盤查找到目標(biāo)term,但磁盤的隨機(jī)讀操作仍然非常耗時(shí),所以盡可能少的讀磁盤就是nosql的初衷,而想要將數(shù)據(jù)放至緩存中,term dictionary又太大了,于是就有了term index,它是term diction的索引,即es中數(shù)據(jù)索引的索引,比如:A開頭的term在第幾頁,B開頭的term又在第幾頁,這棵樹不會(huì)包含所有的term,它包含的是term的一些前綴。通過term index可以快速的定位到term dictionary的某個(gè)offset,然后再從這個(gè)位置往后順序查找,再加上一些壓縮技術(shù)(Lucene Finite State Transducers)trem index的尺寸可以只有所有term的幾十分之一,使得用內(nèi)存緩存所有term index變成可能,其結(jié)構(gòu)如下:

      網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了巨鹿免費(fèi)建站歡迎大家使用!

      為什么es檢索比mysql快,mysql只有term dictionary這一層(索引),是以b+tree排序的方式存儲(chǔ)在磁盤上,檢索一個(gè)term需要若干次的磁盤隨機(jī)訪問,而lucene在term dictionary的基礎(chǔ)上又添加了term index來加速檢索,其以樹的形式緩存在內(nèi)存里,從term index查到對(duì)應(yīng)的term dictionary的block位置后,再去磁盤上找term,大大減少了磁盤的隨機(jī)訪問次數(shù),再加上其以FST形式保存,非常節(jié)省空間,Term dictionary在磁盤上是以分block的方式保存的,一個(gè)block內(nèi)部利用公共前綴壓縮,比如都是Ab開頭的單詞就可以把Ab省去。這樣term dictionary可以比b-tree更節(jié)約磁盤空間。

      使用canal將mysql同步到es中

      因?yàn)樽约喉?xiàng)目中需要用到mysql數(shù)據(jù)同步到es中,查找了相關(guān)資料最后決定用canal來做,所以便有了本文,下面一起來看如何使用canal吧

      根據(jù) 上的原理解釋,我們知道 canal 會(huì)模擬 mysql slave 的交互協(xié)議,偽裝自己為 mysql slave,然后向 mysql master 發(fā)送 dump 協(xié)議。

      mysql master 收到 dump 請(qǐng)求,開始推送 binary log 給 slave(也就是 canal),然后 canal 解析 binary log 對(duì)象(原始為 byte流)。

      經(jīng) canal 解析過的對(duì)象,我們使用起來就非常的方便了。

      再根據(jù) 提供的版本信息,你會(huì)發(fā)現(xiàn) canal 其實(shí)相當(dāng)于一個(gè)中間件,專門用來解析 MySQL 的 binlog 日志。canal 解析好了之后,會(huì)封裝成一個(gè)數(shù)據(jù)對(duì)象,通過 protobuf3.0 協(xié)議進(jìn)行交互,讓 canal 客戶端進(jìn)行消費(fèi)。

      根據(jù)上面的解釋,以及 canal 提供的版本信息,我們?cè)谑褂?canal 的時(shí)候,首選要安裝一個(gè) canal.deployer-1.1.4.tar.gz 進(jìn)行解析 MySQL 的 binlog 日志。

      下載后,復(fù)制 canal.deployer-1.1.4.tar.gz 到 MySQL 主機(jī)上,比如放在 /usr/local/soft/目錄下。然后依次執(zhí)行下面的命令:

      然后修改 canal 的配置文件 vim conf/example/instance.properties

      這三項(xiàng)改成你自己的,比如我的配置如下:

      然后保存并退出。(VI 模式下,按 Esc 輸入 :wq 回車退出。)

      接著,我們檢查一下 MySQL 的配置。確定版本和是否開啟了 binlog 日志,以及日志格式。

      canal 支持 binlog 格式為 ROW 的模式。如果你沒開啟 binlog,并且格式是非 row 的,建議修改一下 mysql 的配置文件。

      執(zhí)行 mysql –help | grep my.cnf 找到 mysql 的 my.cnf 文件。

      執(zhí)行 vim /etc/my.cnf 命令。添加下面 3 個(gè)配置。

      然后保存并退出。

      接著執(zhí)行 sudo service mysqld restart 重啟 MySQL。

      需要注意的是你的 mysql 用戶,必須要有 REPLICATION SLAVE 權(quán)限。該權(quán)限授予 slave 服務(wù)器以該賬戶連接 master 后可以執(zhí)行 replicate 操作的權(quán)利。

      如果沒有權(quán)限,則使用 root 賬戶登錄進(jìn) MySQL,執(zhí)行下面的語句,創(chuàng)建用戶,分配權(quán)限。

      MySQL 啟動(dòng)后,就可以開啟 canal 服務(wù)了。

      開啟后,觀察 canal 服務(wù)的日志,確保服務(wù)正常。

      查看 canal 的日志

      確定沒有問題后,開始編寫我們的測(cè)試程序。

      pom.xml 中導(dǎo)入下面的依賴。

      使用JAVA進(jìn)行測(cè)試

      然后執(zhí)行 main 方法。你再修改修改 MySQL 中的數(shù)據(jù),你會(huì)發(fā)現(xiàn)所有改變都同步過來了。上面是使用的Java代碼進(jìn)行運(yùn)行,如果想用canal.adapter來進(jìn)行運(yùn)行可以下載

      放入服務(wù)器中,依次執(zhí)行下面命令

      然后修改配置文件 :

      然后將需要運(yùn)行存儲(chǔ)到es的的yml文件放入到

      目錄下。例如:

      然后開啟canal-adapter服務(wù)

      /usr/local/soft/canal-adapter/bin/startup.sh

      查看 canal-adapter 的日志,確定沒有問題后修改數(shù)據(jù) 就可以同步到es了

      注意:

      1、canal-adapter自帶mysql連接使用的5.x的,如果自己安裝的是高版本的mysql需要自己去/usr/local/soft/canal-adapter/lib增加對(duì)應(yīng)的jar包

      2、因項(xiàng)目中同步es使用的sql中有數(shù)據(jù)庫中沒有的字段,導(dǎo)致原生程序一直報(bào)異常,后修改源碼中

      加了一個(gè)判斷后才可以

      3、es中使用的date字段類型和數(shù)據(jù)庫中不一致,所以這里又修改了部分源碼兼容我們項(xiàng)目中的類型

      可以根據(jù)各自情況修改。

      如何用一款小工具大大加速M(fèi)ySQL SQL語句優(yōu)化

      1.將經(jīng)常要用到的字段(比如經(jīng)常要用這些字段來排序,或者用來做搜索),則最好將這些字段設(shè)為索引。 2.字段的種類盡可能用int 或者tinyint類型。另外字段盡可能用NOT NULL。 3.當(dāng)然無可避免某些字段會(huì)用到text ,varchar等字符類型,最好將text字段的單獨(dú)出另外一個(gè)表出來(用主鍵關(guān)聯(lián)好) 4.字段的類型,以及長度,是一個(gè)很考究開發(fā)者優(yōu)化功力的一個(gè)方面。如果表數(shù)據(jù)有一定的量了,不妨用PROCEDURE ANALYSE()命令來取得字段的優(yōu)化建議!(在phpmyadmin里可以在查看表時(shí),點(diǎn)擊 “Propose table structure” 來查看這些建議) 如此可以讓你的表字段結(jié)構(gòu) 趨向完善。 5.select * 盡量少用,你想要什么字段 就select 什么字段出來 不要老是用* 號(hào)!同理,只要一行數(shù)據(jù)時(shí)盡量使用 LIMIT 1 6.絕對(duì)不要輕易用order by rand() ,很可能會(huì)導(dǎo)致mysql的災(zāi)難!! 7.每個(gè)表都應(yīng)該設(shè)置一個(gè)ID主鍵,最好的是一個(gè)INT型,并且設(shè)置上自動(dòng)增加的AUTO_INCREMENT標(biāo)志,這點(diǎn)其實(shí)應(yīng)該作為設(shè)計(jì)表結(jié)構(gòu)的第一件必然要做的事!! 8.拆分大的 DELETE 或 INSERT 語句。因?yàn)檫@兩個(gè)操作是會(huì)鎖表的,表一鎖住了,別的操作都進(jìn)不來了,就我來說 有時(shí)候我寧愿用for循環(huán)來一個(gè)個(gè)執(zhí)行這些操作。 9.不要用永久鏈接 mysql_pconnect();除非你真的非常肯定你的程序不會(huì)發(fā)生意外,不然很可能也會(huì)導(dǎo)致你的mysql死掉。 10.永遠(yuǎn)別要用復(fù)雜的mysql語句來顯示你的聰明。就我來說,看到一次關(guān)聯(lián)了三,四個(gè)表的語句,只會(huì)讓人覺得很不靠譜。


      分享名稱:mysql怎么用es加速 mysql配合es
      本文鏈接:http://www.ef60e0e.cn/article/dohceec.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        黄平县| 田阳县| 淮阳县| 齐齐哈尔市| 印江| 博兴县| 休宁县| 华安县| 滦平县| 新丰县| 赤峰市| 中江县| 天峨县| 高阳县| 汉源县| 宝鸡市| 阳朔县| 舞阳县| 灵山县| 弋阳县| 儋州市| 灵宝市| 台安县| 高唐县| 营山县| 焦作市| 松桃| 稻城县| 化州市| 清远市| 安达市| 简阳市| 庄浪县| 龙江县| 都江堰市| 安仁县| 绥宁县| 城市| 徐州市| 华安县| 秭归县|