欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql表數據量太大,達到了1億多條數據,除了分庫分表之外,還有沒有其他的解決方式?

錢浩然2年前15瀏覽0評論

通常來說,Mysql表的數據量達到一兩千萬之后,操作起來開始有些吃力了,如果數據量達到上億,估計系統是吃不消的。

那么解決方案有哪些呢?我提幾個思路:

就用Mysql,不考慮遷移

  • 分庫分表其實是比較好的方案,但是已經被題主否了,就不詳細說了;
  • 表設計的優化:在設計表的時候,就要考慮性能問題了。例如字段盡量避免NULL,時間類型盡量使用TIMESTAMP,單表的字段不宜過多等等。

  • 索引的優化:索引不是越多越好,也不是所有的字段都適合建立索引,使用多列索引的時候,要注意SQL中的條件順序等。

  • SQL的優化:有的時候查詢慢,可能是SQL寫的爛。查詢盡量用到索引,避免錯誤的寫法導致索引失效,避免使用select*查詢出來所有的列,拆分復雜的SQL語句,查詢使用分頁等等。

  • 分區:分區表是獨立的邏輯表,底層由多個物理表組成,這些對用戶來說是透明的;如果按照分區字段查詢數據的話,就會在某一張分區表內查詢,速度回比較快;分區字段的選擇,需要根據你們實際業務來;比如你們這張表如果可以分100個分區的話,那么每張表實際只有100萬的數據;使用分區表盡量避免全表掃描;建議考慮這種優化方式。

拋棄Mysql,遷移數據庫

  • 如果公司有錢的話,可以直接上商業數據庫,Oracle、DB2什么的,一億的數據還是可以搞的定的,當然會也比較貴。

  • 其他開源數據庫,有可以支持千萬級的產品,不過不建議使用,坑會比較多。

  • 云數據庫,可以考慮把數據遷移到云上,比如阿里云,花一些錢,少操一些;不過如果是比較敏感的數據,放到云上,多少會不太放心;私有云?這個也貴。

另外,如果不遷移Mysql的話,可以加以非關系型數據庫進行輔助,例如一些數據放到Redis里面進行緩存,或者通過跑數的方式,把原始數據加工好放到Mongodb中提供查詢,總之就是減少對數據庫的訪問。

我將持續分享Java開發、架構設計、程序員職業發展等方面的見解,希望能得到你的關注。