如果有很多資料插入mysql 你會選擇什麼方式?
儲存過程
mysql儲存過程
mysql索引使用案例分析
關於sql查詢效率,100w資料,查詢只要1秒
索引,增加查詢速率
能能,能
不會應盡量避免在 where 子句中對字段進行表示式操作,這將導致引擎放棄使用索引而進行全表掃瞄
explain
mysql explain用法和結果的含義
不會,不會使用,(但不會使索引失效)
1.速率drop > truncate > delete
drop是ddl,會隱式提交,所以,不能回滾,不會觸發觸發器。
drop語句刪除表結構及所有資料,並將表所占用的空間全部釋放
truncate是ddl,會隱式提交,所以,不能回滾,不會觸發觸發器
truncate會刪除表中所有記錄
delete是dml,執行delete操作時,每次從表中刪除一行,並且同時將該行的的刪除操作記錄在redo和undo表空間中以便進行回滾(rollback)和重做操作,但要注意表空間要足夠大,需要手動提交(commit)操作才能生效,可以通過rollback撤消操作。
觸發器;線上慢查詢的排查
不支援,編碼utf8mb4
某些表資料達到500w+以後查詢統計效能嚴重下降
select * from information_schema.processlist where command = 'query';
檢查是否有死程序
select * from information_schema.innodb_trx;
kill 程序號
重新執行
讓主資料庫處理事務性增、改、刪操作(insert、update、delete),而從資料庫處理select查詢操作
mysqlproxy實際上是在客戶端請求與mysqlserver之間建立了乙個連線池。所有客戶端請求都是發向mysqlproxy,然後經由mysqlproxy進行相應的分析,判斷出是讀操作還是寫操作,分發至對應的mysqlserver上
【mysql 讀寫分離】10分鐘了解讀寫分離的作用
記錄一次經歷的資料庫從單庫到分庫分表的過程
是乙個記憶體常駐的問題,
但是實際上是表缺少索引,你在where,order by列新增索引 就不會有這種情況了。
產生的原因可能:你的錶行數很多,由於沒有新增索引,需要進行全表掃瞄,第一次需要從物理磁碟中將全表載入到記憶體中,很慢。第二次因為全表在記憶體中 所以查詢很快。
如果新增了索引的話,就不需要全表掃瞄,即使第一次也不需要載入全表資料
1.大大加快資料的檢索速度;
2.建立唯一性索引,保證資料庫表中每一行資料的唯一性;
3.加速表和表之間的連線;
4.在使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。
1.索引需要佔物理空間。
2.當對表中的資料進行增加、刪除和修改的時候,索引也要動態的維護,降低了資料的維護速度。
牛客網的面試題(一)(字首,中綴,字尾)
1.題目 unsigned int a 0x1234 unsigned char b unsigned char a 在 32位大端模式處理器上變數 b等於 a 0x00 b 0x12 c 0x34 d 0x1234 解析 int 是4 個位元組,大端儲存,所以補齊的話是 a 0x00 00 12 ...
海盜瓜分金幣 一道網上流傳的微軟面試題
在乙個孤島上有 5個海盜要瓜分 100塊金幣 他們按下列方法來瓜分這些掠奪物 資格最老的海盜提出乙個分配意見 然後大家對這個分配意見投票表決 如果有一半的人投了贊成票 就按照這個方案來劃分 如果沒有通過 就殺調這個資格最老的海盜 然後再由活著的海盜中資格最老的海盜來提出分配方案 按照同樣的方式來投票...
乙個關於多執行緒的面試題,網上大多給了錯誤的答案
根據執行緒安全的相關知識,分析以下 當呼叫test方法時i 10時是否會引起死鎖?並簡要說明理由。public void test int i 答 不會發生死鎖,但有一點int是按值傳遞的,所以每次改變的都只是乙個副本,因此不會出現死鎖。但如果把int換做乙個object,那麼死鎖會發生 原來自己沒...