• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 119  文章 - 290  trackbacks - 0

            博客搬家了哦,請移步
            叫我abc

            常用鏈接

            留言簿(12)

            隨筆分類

            我的博客

            搜索

            •  

            積分與排名

            • 積分 - 304570
            • 排名 - 84

            最新評論

            閱讀排行榜


            前陣子交代了mysql的一些初級安裝問題,接下來繼續。

            1.設置存儲引擎(strorage engine)
            mysql有很多存儲引擎,不同的引擎有不同的存儲特性,應對不同的解決方案,這就不多說了。
            不過最基本的,應該是不用myisam,雖然它很快,但是不支持事務。
            innodb并不慢,雖然不可能會有myisam那么快,但是它支持事務,完整性優于更好的效率。
            所以配置mysql的第一步,就是設置已經選好的存儲引擎——innodb
            在.my.cnf配置文件中加上
            [server]
            default-storage-engine=INNODB

            2.設置數據存儲位置
            本來不會有這一步的,數據文件默認的會保存在mysql/data目錄下。但是我當前的磁盤分區快滿了,今后肯定沒有辦法導入大量數據,無奈之下加了塊磁盤,然后把數據存儲位置設置到新磁盤下。
            因為使用的是innodb,所以默認的數據源就不進行移動了,只要設置innodb的目錄即可
            [server]
            innodb_data_home_dir=/newdisk
            innodb_log_group_home_dir=/newdisk
            其中一個是數據文件目錄,另外一個是log目錄,這個log和binlog還不太一樣,主要是用來維護事務完整性的吧,并不是備份用的。
            The ib_logfile's hold statements affecting innodb tables only. If a crash occurs they are automatically used to complete any innodb transactions that didn't complete before the crash.

            3.設置字符集
            我想這是初次使用mysql的人通常會遇到的問題,而且越晚發現越致命吧。
            mysql支持多字符集,為了支持國際化存儲,通常服務器的字符集肯定會設置成utf8。不過沒有國際化需求的同學可以大大方方的使用gb2312/gbk之類的本地字符集。(默認是latin)
            [server]
            character_set_server=utf8
            服務器的字符集設置其實是次要的,畢竟可以通過create database或者create table來設置更具體的存儲字符集。
            客戶端的字符集設置是關鍵,分為三部分:
            1.client set。即作為數據源所使用的字符集。比如你從文件中導入數據到mysql,那么應該將client set設置為文件所用的字符集;又比如你通過客戶端執行插入語句,那么應該將client set設置成客戶端所用的字符集;我的secureCRT是utf8的,所以client set=utf8。
            2.connection set。mysql服務器收到數據后,會將文字從client set轉換成connection set。
            為什么要有一個connection set呢,直接轉換成存儲字符集入庫不就好了嗎?我查了一下,使用connection set的理由是,文字長度和文字比較等事情的結果,會根據字符集的不同而不同的。
            connection set可以根據需要設置,只要別是有損轉換即可。通常會和client set保持一致而去掉轉換,如果比較結果不影響什么的話。
            3.result set。mysql執行語句的結果集在發給你之前,會先轉換成result set,通常會和client set一致。你的客戶端用什么就讓它返回什么就好。
            我會選擇所有的字符集都用一種,這樣也就不需要什么轉換了。
            [client]
            default-character-set=utf8
            或者set names utf8(執行語句)

            4.表空間(table space)

            之所以提到表空間的問題,是因為innodb會把所有的數據都寫入到一個數據文件上,如果你不修改默認設置的話。訪問一個超大的文件和訪問多個較大的文件在效率上相比是怎樣我不清楚,但是我的當時導入數據的時候是越來越慢,于是就改成使用多個表空間(數據文件)了。
            [server]
            innodb_autoextend_increment=50
            innodb_data_file_path=ibdata1:700M;ibdata2:2200M;ibdata3:1250M;autoextend
            在多個表空間的情況下,mysql只會往最新的一個數據文件上寫數據,所以前面的表空間會固定在這個大小。
            除非老的表空間因刪除數據而有空閑,不然是不會往里寫入的,并且老的表空間是不會再增大的。
            這種多表空間的使用方式,需要偶爾停下機,新建一個表空間,還是挺麻煩的。
            posted on 2009-03-29 20:50 LOGOS 閱讀(1890) 評論(0)  編輯 收藏 引用 所屬分類: mysql入門
            亚州日韩精品专区久久久| 三上悠亚久久精品| 亚洲人成网站999久久久综合| 亚洲国产天堂久久综合| 五月丁香综合激情六月久久| 国产精品久久久久aaaa| 久久99精品国产麻豆蜜芽| 日本久久中文字幕| 国产aⅴ激情无码久久| 一本一道久久精品综合| 无码伊人66久久大杳蕉网站谷歌 | 99久久99这里只有免费费精品| 久久精品国产只有精品2020| 久久毛片一区二区| 老司机午夜网站国内精品久久久久久久久 | 久久综合九色综合97_久久久| 久久综合亚洲鲁鲁五月天| 久久亚洲欧美日本精品| 欧美一区二区三区久久综合| 亚洲国产成人久久综合野外| 99久久精品费精品国产| 午夜天堂av天堂久久久| 久久国产精品无| 久久久久99这里有精品10| 久久久99精品成人片中文字幕 | 久久久国产乱子伦精品作者| 午夜精品久久久久久久无码| 久久久艹| 久久久久久久亚洲精品 | 久久亚洲sm情趣捆绑调教| 色综合久久中文字幕综合网| 无码国内精品久久人妻麻豆按摩| 亚洲国产精品久久久久| 精品久久久久久国产免费了| 91精品观看91久久久久久 | 久久久久亚洲Av无码专| 久久99精品久久久久久动态图 | 少妇久久久久久被弄到高潮| 性高朝久久久久久久久久| 久久婷婷是五月综合色狠狠| 久久久久se色偷偷亚洲精品av|