Blog

Problemy z najnowszą wersją MariaDB i długa indeksacja

Analiza problemów z długą indeksacją produktów w najnowszej wersji MariaDB oraz propozycja rozwiązania.

W przypadku najnowszej wersji MariaDB pojawiły się problemy z ekstremalnie długą indeksacją listy produktów.

Po analizie udało się odkryć, że problemem jest rzutowanie typów przez bazę danych. Poniżej przedstawiamy krótki fix, który można zastosować w pliku Magento/Framework/DB/Adapter/Pdo/Mysql.php:

1public function quoteInto($text, $value, $type = null, $count = null)
2{
3 if (is_array($value)) {
4 foreach($value as &$val) {
5 $val = $this->castNumeric($val);
6 }
7 } else {
8 $value = $this->castNumeric($value);
9 }
10
11 if (is_array($value) && empty($value)) {
12 $value = new \Zend_Db_Expr('NULL');
13 }
14
15 if ($value instanceof \DateTimeInterface) {
16 $value = $value->format('Y-m-d H:i:s');
17 }
18
19 return parent::quoteInto($text, $value, $type, $count);
20}
21
22private function castNumeric($val)
23{
24 if (is_numeric($val)) {
25 return $val + 0;
26 }
27 return $val;
28}


Rozwiązanie na podstawie:
https://github.com/magento/magento2/pull/25212/commits/b4a6b68e2d4ad403b1e85e8abdf829fb14dd2138

avatar
Mateusz Lasak
14 sty 2020
News